Git vs GitHub - Entendendo a Diferença
Tags: git, github
Published: 2020-10-06 21:05:54

# 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](https://pt.wikipedia.org/wiki/Linus_Torvalds), o pai do Linux, para o desenvolvimento do kernel Linux e mantido desde 2005 por [Junio Hamano](https://pt.wikipedia.org/wiki/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](https://dev-to-uploads.s3.amazonaws.com/i/mjo7edsmsb28macihbdf.png "Arquitetura Distribuída de Repositórios Git")

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](https://sempreupdate.com.br/github-substituira-master-por-main-a-partir-do-proximo-mes/)).
- 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](https://dev-to-uploads.s3.amazonaws.com/i/5mk1en5283n0jp6t9kb9.png "Fluxo de trabalho com Git")
- 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](https://g1.globo.com/economia/tecnologia/noticia/microsoft-compra-github-por-us-75-bilhoes.ghtml), 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](https://about.gitlab.com/) e o [Bitbucket](https://bitbucket.org/) 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](https://dev-to-uploads.s3.amazonaws.com/i/fg7ojk3jdf6bo1d1ab76.png "Plataformas baseadas em nuvem para armazenamento de repositórios git: GitLab, GitHub, Bitbucket")

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).