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
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
é 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 à
mainoumaster; - For importante manter um registro explícito da integração.
Exemplo
git checkout main
git merge minha-feature
git checkout
O comando:
git checkout
permite navegar entre branches e commits.
Atalho útil
git checkout -
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
não cria uma ramificação adicional no histórico nem um commit extra de junção.
O Git:
- Retorna ao ponto em que sua branch divergiu da
main; - Aplica os commits novos da
main; - 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
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
git reset
O:
git reset
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
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
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)