Git: A Chave para um Desenvolvimento de Software Mais Organizado
"Para cada minuto de organização, uma hora é ganha." - Benjamin Franklin.
Ainda que seja do século XVIII, essa frase de Benjamin Franklin continua atual, destacando a importância da preparação em quaisquer atividades, ou seja, um fluxo de trabalho bem organizado pode economizar horas de retrabalho em seu projeto. É neste momento que o Git entra em ação, uma ferramenta de controle de versão que auxilia no gerenciamento do seu projeto.
Já se viu em uma situação em que desejaria voltar no tempo? Recomeçar de um momento exato? No mundo da programação, isso ocorre o tempo todo, alterações que precisam ser desfeitas. Essa é a principal característica do Git, ele funciona como um grande armazenador de versões, que permite restaurar sempre que necessário.
Vamos descobrir como o Git faz isso. Veja a seguir os tópicos que serão abordados nesse artigo:
- Introdução
- O que é o Git? Funcionamento e termos
- Principais Comandos Git
- Git vs GitHub (e alternativas)
- Conclusão
- Referências
Introdução
A evolução é um processo de mudança gradual que ocorre ao longo do tempo. No desenvolvimento de softwares, não é diferente, já que atualizações surgem a todo momento. As atualizações buscam implementar novas funções, corrigir vulnerabilidades, otimizar funcionalidades ou desempenho e etc. Agora imagine que uma atualização não seja realizada corretamente e acaba por prejudicar o funcionamento do software, o que fazer nessa situação?
A solução para esse problema está na ferramenta chamada Git, com ele é possível reverter para versões anteriores, sem perder o progresso anterior, e minimizando o impacto de atualizações malsucedidas.
Inicialmente, a manutenção do projeto da kernel do Linux era realizada com patches e tarballs — ferramentas mais antigas e menos eficientes — posteriormente, aderiram ao BitKeeper — Um dos primeiros versionadores de código distribuído, além disso era uma ferramenta fechada que projetos Open Source poderiam utilizar, entretanto isso mudou após uma tentativa de engenharia reversa em seus códigos o que fez a empresa rever sua política, proibindo seu uso gratuito.
Diante de um dilema, Linus Torvalds — criador do Linux — buscava alternativas para substituir o BitKeeper e manter sua organização de projeto, entretanto, sempre se esbarrava em algum problema, seja a falta de desempenho, a falta de distributividade ou integridade e por fim, decidiu escrever o seu próprio gerenciador. Em suas palavras, ele “poderia escrever algo melhor que qualquer coisa que existia em duas semanas”.
Surge, então, em 2005 o sistema de versionamento Git.
O que é o Git? Funcionamento e Termos
Criado em 2005, por Linus Torvalds, o Git é um sistema de controle de versões distribuído. O Git registra todas as alterações feitas no projeto com alguns dados adicionais, como quem, quando e porquê alterou. Essa ferramenta auxilia na organização e gerenciamento do projeto, principalmente em situações onde mais há mais de um desenvolvedor trabalhando no projeto.
Imagine a seguinte situação, uma equipe está trabalhando no desenvolvimento de um novo software, cada integrante da equipe possui uma função específica, um é responsável pela conexão com o banco de dados, o outro pela parte visual e etc. Ambos os desenvolvedores precisam trabalhar no projeto simultaneamente, como fazer isso sem comprometer a integridade do código? Ao utilizar o Git, cada desenvolvedor pode criar uma “cópia” do arquivo e realizar as suas alterações, posteriormente basta enviar essas alterações que o Git combinará ambos os arquivos.
Imagine o projeto como uma árvore. O arquivo principal seria o tronco, chamado de Main, os galhos são as Branches, ou ramificações, que são as cópias criadas pelos desenvolvedores para trabalhar em alterações mantendo o arquivo principal intacto, as mudanças são salvas no arquivo ao realizar um Commit. Após as alterações serem concluídas, é necessário realizar um Merge, ou mesclagem, ou seja, acrescentar as alterações que foram feitas na ramificação no arquivo principal.
Cada alteração é salva e armazenada em um histórico, que pode ser recuperado sempre que for necessário. O recomendado é que a versão principal seja a que está na ramificação principal, chamada Main, entretanto há projetos que após uma mudança significativa utilizam uma ramificação secundária como a principal, mudando a Main original.
Vamos entender melhor os principais termos do Git:
- Repositório: É o local que o Git armazena as versões do arquivo, uma pasta.
- Branch: São ramificações no projeto;
- Main: É o nome dado à ramificação principal do projeto, antes era chamada de Master, mas recentemente o Git vem tornando Main o nome padrão;
- Commit: Ação de salvar alterações realizadas no arquivo;
- Merge: Atualizar ramificação escolhida (geralmente a principal Main) com as novas alterações, ou seja, combinar as alterações realizadas na Branch secundária com a Branch principal Main.
O método que o Git utiliza, segue o mesmo princípio que o Linux originalmente utilizava, fazendo uso de diffs. A ferramenta diff identifica se um caractere existe no arquivo original e não existe na subsequência ou vice-versa, então acrescenta alguns metadados, como a linha que o caractere está ou estava, quem alterou, então têm-se um arquivo patch. Imagine que você tenha um arquivo de texto com a palavra "casa" e o altere para "casas". O diff identificará que o caractere "s" foi adicionado no final da palavra.
É importante destacar, que a ferramenta diff possui aplicação não apenas à textos, mas podendo ser utilizada para qualquer tipo de arquivo, como imagens, vídeos e etc. Como o Git não armazena cópias completas dos arquivos, somente a diferença entre as versões (os patches), isso torna o torna muito eficiente além de trazer uma economia em armazenamento.
Imagine, que dois desenvolvedores estejam trabalhando no mesmo projeto. Ambos criam suas próprias branches a partir da Main para desenvolver funcionalidades diferentes. No entanto, os dois acabam alterando exatamente a mesma linha de um arquivo —. Quando um deles tentar fazer o merge de sua branch na Main, o Git detectará esse conflito e pausará a mesclagem até que um deles resolva manualmente qual valor deve permanecer.
Principais Comandos do Git
git init
: Este é o principal comando para começar com o Git, é ele quem dá início ao Git.git clone [URL]
: Este comando permite criar uma cópia de algum repositório a partir de um link.git config
: Este comando permite definir as configurações do Git, como nome de usuário, e-mail e etc.git add [arquivo]
: Esse comando adiciona os arquivos à área de preparação, etapa anterior ao realizar um commit.git commit - m "seu texto"
: Cria um novo commit com as alterações que já preparadas, o trecho entre aspas é o local que você deve informar o nome do seu commit, geralmente está relacionado a alteração feita.git status
: Exibe o status do diretório de trabalho e da área de preparação.git log
: Exibe o histórico de commits.git diff
: Exibe as diferenças entre commits, arquivos ou branches.git branch
: Lista, cria ou exclui as branches.git checkout [nome_branch]
: Alterna entre as branches.git merge [nome_branch]
: Mescla as alterações da branch especificada na branch atual.git remote add origin [URL]
: Adiciona um repositório remoto chamado "origin".git push origin [nome-branch]
: Envia commits para o repositório remoto "origin" na branch especificada.git pull origin [nome_branch]
: Baixa commits do repositório remoto "origin" para a branch local.git reset
: Desfaz alterações, redefinindo o HEAD para um estado anterior.git stash
: Salva temporariamente as alterações não confirmadas.git clean
: Remove arquivos não rastreados do repositório.
Git vs GitHub (e alternativas)
Agora que já entendemos o que é o Git, vamos compreender o que é o GitHub.
O GitHub é uma plataforma de hospedagem de código, que utiliza Git como controle de versões. Ele hospeda repositórios Git na nuvem, além de facilitar a colaboração através de suas ferramentas como pull requests — onde desenvolvedores podem solicitar que suas alterações sejam adicionadas ao código principal — e issues — sistema de rastreamento de problemas e tarefas, que facilitam a comunicação durante o projeto.
Em resumo, o GitHub é uma plataforma online que oferece recursos adicionais ao Git e que permite armazenar códigos na nuvem, compartilhar com outros desenvolvedores e trabalhar em equipe.
Outra característica importante do GitHub, é que atualmente ele também pode ser considerado uma ferramenta importante de networking além de uma espécie de portfólio. Além da hospedagem de códigos, o GitHub fornece outros recursos como hospedagem de páginas estáticas através do GitHub Pages, automações, testes e implementações através do GitHub Action, além de fornecer ensino gratuito de seu conteúdo por meio do GitHub Skills.
Apesar de ser o mais conhecido, o GitHub não é a única opção ao se tratar de hospedagem de código que utiliza Git. Alternativas como GitLab e BitBucket vêm ganhando força e reconhecimento. Alguns dos recursos principais que o GitLab oferece incluem integração e entrega contínua, gerenciamento de projetos e outros, diferentemente do GitHub, o GitLab permite que as empresas instalem sua própria instância da plataforma.
Já o Bitbucket destaca-se ´principalmente por sua integração nativa com ferramentas Atlassian — empresa responsável pela criação do Trello —, além de diversos recursos voltados para desenvolvimento ágil.
Conclusão
Utilizar o Git não é apenas uma escolha técnica, e sim estratégica. O Git é uma ferramenta poderosa e necessária no mundo da programação, com Git os desenvolvedores conseguem registrar, revisar e reverter mudanças de forma eficiente, o que acaba por reduzir o tempo gasto em retrabalho e ainda facilita a comunicação e trabalho em equipe.
Neste artigo, entendemos o que é o Git, suas características e qual a diferença entre GitHub e outras plataformas semelhantes.
Referências
Evolução da Arquitetura de Computadores e Software. Disponível em: https://leilsoncomputacaoaplicada.wordpress.com/2016/05/14/evolucao-da-arquitetura-de-computadores-e-software/. Acesso em: 10 abr. 2025.
Git vs. GitHub: What's the difference? Disponível em: https://www.theserverside.com/video/Git-vs-GitHub-What-is-the-difference-between-them. Acesso em: 10 abr. 2025.
Entendendo GIT | (não é um tutorial!). Disponível em: https://www.youtube.com/watch?v=6Czd1Yetaac. Acesso em: 10 abr. 2025.