DEV Community

Manoel Lucas
Manoel Lucas

Posted on

Passos para trás (discutindo conceitos e comandos básicos de git).

Iniciar o estudo de qualquer tecnologia nova é sempre uma tarefa árdua, principalmente diante do bombardeio de informações que tem acontecido na área, especialmente desde o boom das IAs.

Recentemente, refleti sobre isso e decidi reorganizar meus conhecimentos e revisitar conceitos e habilidades que, ao meu ver, têm sido negligenciadas.

O foco de quase todo programador iniciante hoje é o Claude, o Gemini, o Codex, a IA do momento, enquanto os fundamentos essenciais da computação — indispensáveis para a construção de uma consciência crítica na análise do código — são cada vez menos discutidos.

Não considero errado se concentrar nesse rio de inovações que vivenciamos, mas (e isso pode ser fruto da minha rigidez cognitiva) acredito que é fundamental também estudar o simples.


Git: A Base do Desenvolvimento Moderno

Nesse contexto de valorização dos fundamentos, o Git se destaca como a ferramenta essencial para a gestão de código.

Ele não é apenas um sistema de controle de versão; é a espinha dorsal de qualquer desenvolvimento moderno, garantindo:

  • Histórico imutável do projeto;
  • Colaboração eficiente em equipe;
  • Segurança para reverter erros;
  • Organização do workflow;
  • Controle completo das alterações.

Dominar o Git é um passo crucial para solidificar as bases e construir uma carreira sustentável, independentemente das IAs do momento.

É chato, extremamente decorativo (caso você não se interesse pela estrutura interna, que é incrivelmente bem feita), mas é importante.


Objetivo destas Anotações

Pensando nisso, encontrei um curso muito interessante de Git enquanto navegava pelo YouTube.

É um curso simples, ministrado pela lenda Willian Justen, mas que aborda ideias essenciais para o workflow de um bom desenvolvedor júnior.

Diante disso, pretendo compartilhar anotações de conceitos e comandos que podem ser úteis em algum momento do dia de vocês.


1. Integração e Sincronização de Branches

Manter o código atualizado e alinhado com o restante da equipe é uma das partes mais importantes do trabalho com Git.

Isso faz parte do que chamamos de workflow — a dança sincronizada entre o desenvolvedor e o repositório.


git pull

O comando:

git pull
Enter fullscreen mode Exit fullscreen mode

busca as atualizações do repositório remoto (como o GitHub) e as integra ao seu repositório local.

Objetivo

Garantir que seu ambiente de trabalho esteja sempre sincronizado com as mudanças feitas por outros membros da equipe.


git merge

O comando:

git merge
Enter fullscreen mode Exit fullscreen mode

é utilizado para unir diferentes ramificações, respeitando a ordem cronológica do histórico.

Ao juntar as branches, o Git gera um commit de merge, registrando explicitamente o momento da integração.

Regra de ouro

Utilize o merge quando:

  • Sua funcionalidade estiver finalizada;
  • Você quiser integrá-la oficialmente à main ou master;
  • For importante manter um registro explícito da integração.

Exemplo

git checkout main
git merge minha-feature
Enter fullscreen mode Exit fullscreen mode

git checkout

O comando:

git checkout
Enter fullscreen mode Exit fullscreen mode

permite navegar entre branches e commits.

Atalho útil

git checkout -
Enter fullscreen mode Exit fullscreen mode

Esse comando alterna rapidamente para a branch ou commit anteriormente acessado.

Funciona como um “voltar” da navegação.


git rebase

Diferente do merge, o:

git rebase
Enter fullscreen mode Exit fullscreen mode

não cria uma ramificação adicional no histórico nem um commit extra de junção.

O Git:

  1. Retorna ao ponto em que sua branch divergiu da main;
  2. Aplica os commits novos da main;
  3. Reaplica seus commits no topo da pilha.

Resultado

Um histórico:

  • Linear;
  • Limpo;
  • Organizado;
  • Sem commits desnecessários de merge.

Regra de ouro

Use rebase quando precisar apenas atualizar sua branch local com as novidades recentes da main enquanto ainda está desenvolvendo.


Merge vs Rebase

Merge Rebase
Cria commit de merge Não cria commit extra
Histórico ramificado Histórico linear
Melhor para integração oficial Melhor para atualização local
Mantém contexto da integração Mantém histórico limpo

2. Desfazendo e Corrigindo Erros

Erros acontecem constantemente no desenvolvimento.

O Git oferece diferentes abordagens para desfazer alterações, e a escolha correta depende da branch que está sendo modificada.


git revert

O comando:

git revert
Enter fullscreen mode Exit fullscreen mode

funciona como um “Ctrl + Z” seguro para o repositório.

Ele desfaz as alterações de um commit problemático criando um novo commit de reversão.

Principal vantagem

O histórico existente não é apagado nem alterado.

Quando usar?

Ideal para:

  • main;
  • master;
  • branches públicas;
  • ambientes compartilhados.

Exemplo

git revert HASH_DO_COMMIT
Enter fullscreen mode Exit fullscreen mode

git reset

O:

git reset
Enter fullscreen mode Exit fullscreen mode

faz o repositório “voltar no tempo”.

Diferente do revert, ele altera destrutivamente o histórico, apagando os registros posteriores ao commit escolhido.

Atenção

Não deve ser utilizado em branches públicas.

É ideal apenas para limpar o histórico de branches locais e isoladas.


Tipos de Reset


git reset --hard

git reset --hard HASH
Enter fullscreen mode Exit fullscreen mode

O que faz?

  • Retorna ao commit desejado;
  • Remove commits posteriores;
  • Apaga alterações locais;
  • Exclui arquivos criados depois daquele ponto.

Consequência

Perda definitiva das alterações recentes.


git reset --soft

git reset --soft HASH
Enter fullscreen mode Exit fullscreen mode

O que faz?

  • Remove commits do histórico;
  • Mantém as alterações na área de trabalho;
  • Permite reorganizar os commits.

Vantagem

Muito mais seguro para reorganização do código.

Melhor sempre optar pelo --soft, pois reduz as chances de causar grandes problemas no projeto.


Comparação: --hard vs --soft

--hard --soft
Apaga alterações Mantém alterações
Mais destrutivo Mais seguro
Remove arquivos locais Preserva arquivos
Difícil recuperação Permite reorganização

Conclusão

Concluímos, por ora, a Parte 1 destas anotações sobre Git.

Os comandos apresentados aqui formam a base de praticamente qualquer workflow moderno de desenvolvimento.

Mesmo em um cenário dominado por ferramentas de IA, dominar fundamentos como:

  • versionamento;
  • sincronização;
  • histórico;
  • organização de branches;
  • correção de erros;

continua sendo indispensável para qualquer desenvolvedor.


Top comments (0)