DEV Community

Cover image for Git vs GitHub - Entendendo a Diferença
Daniel Carvalho
Daniel Carvalho

Posted on

Git vs GitHub - Entendendo a Diferença

Introdução

O Git e GitHub tem um papel importantíssimo não apenas para o open source, mas para o dia a dia de vários desenvolvedores e empresas. Mas você sabe o que é o Git? Entende o que é o GitHub? Sabe o que diferencia uma ferramenta da outra? Caso a resposta seja não para alguma dessas perguntas, não se preocupe pois você não está sozinho.

Nesse artigo você vai aprender o que é Git e o que é GitHub, alguns dos recursos que cada uma dessas ferramentas oferece e qual a relação entre elas.

O que é Git?

Criado por Linus Torvalds, o pai do Linux, para o desenvolvimento do kernel Linux e mantido desde 2005 por Junio Hamano, o Git é um Sistema Controlador de Versões Distribuído (Distributed Version Control System - DVCS) que te permite observar e controlar as mudanças no seu código. É um DVCS bem popular e usado em muitos projetos por ser multiplataforma, gratuito, eficiente e fácil de usar.

Um sistema controlador de versões como o Git te permite acompanhar, revisar e gerenciar as versões dos seus projetos e até mesmo reverter erros que podem occorer durante o desenvolvimento, como deletar alguma parte importante ou quebrar alguma funcionalidade durante a implementação de um novo recurso.

Dizemos que o Git é distribuído basicamente porque ele permite que múltiplas pessoas, independente da sua localização geográfica, tenham um clone (uma cópia) do repositório principal de forma local, com todo o histórico de commits. Dessa forma você pode fazer suas alterações, enviar pro repositório principal e todos os outros colaboradores vão ter acesso quando atualizarem suas cópias do repositório.
Alt Text

Alguns dos recursos do Git são:

  • Branch: o modelo de ramificação ou Branch é a joia da coroa do Git. Esse recurso te permite criar um ambiente isolado do ambiente principal e experimentar do modo que você achar melhor sem comprometer o repositório principal. Após você confirmar que a solução funciona, basta fazer o merge com a branch main (desde 01/10/2020 a branch master passou a ser chamada de branch main por padrão).
  • Stash: precisa trocar de branch mas não quer fazer um commit ainda? Use o stash para armazenar todas as alterações feitas, troque de contexto e retorne em outro momento do ponto em que parou;
  • Staging Area: é uma área intermediária no fluxo de trabalho com o Git. Ela te permite controlar quais arquivos vão ser adicionados a um commit; Alt Text
  • Bisect: o comando bisect usa busca binária dentro do histórico de commits para procurar em qual commit um bug foi inserido no projeto;

E onde entra o GitHub nisso?

Fico feliz que você perguntou, o GitHub é uma plataforma criada em 2008 e comprada pela Microsoft pela pequena quantia de 7.5 bilhões de doláres em 2018, ele te permite gerenciar e hospedar seus repositórios com git na nuvem. Porém é só isso, o git não precisa do GitHub, mas o GitHub precisa do git. Você pode manter todos os seu projetos com git local se preferir, o GitHub age apenas como uma alternativa para manter um backup do seu projeto com git fora da sua máquina, além de tornar mais fácil a colaboração e o compartilhamento do seu projeto com outras pessoas.

Existem outras plataformas concorrentes do GitHub como o GitLab e o Bitbucket que também permitem que você salve seus projetos com git na nuvem. Entrentanto o GitHub é simplesmente mais popular, pois basicamente todos os devs possuem uma conta no site para gerenciar seus projetos.
Alt Text

O GitHub tem uma gama de recursos, como:

  • Hospedagem do seu código na nuvem;
  • Visualização do histórico de commits;
  • Pull Requests: são basicamente solicitações de inclusão de código no projeto principal, elas permitem revisão do que vai ser adicionado e comentários;
  • Issues: colaboradores e usuários podem identificar bugs ou solicitar features através de Issues que ficam disponíveis para discussão e acompanhamento no GitHub;
  • Fluxo de Integração Continua/Entrega Contínua (Continuous Integration/Continuous Delivery - CI/CD) com as GitHub Actions;
  • Documentação do seu projeto através do GitHub Wiki;
  • Criar páginas estáticas diretamente do seu repositório no GitHub com o GitHub Pages;
  • Centralização e disponibilização do projeto permitindo um processo de colaboração mais simples e distribuído, i.e, qualquer pessoa pode ver, clonar e fazer contribuições para um projeto no GitHub (você também pode limitar quem pode ver e contribuir para o projeto tornando o repositório privado).

Top comments (0)