🚀 Oferta especial: 60% OFF no CrazyStack - Últimas vagas!Garantir vaga →
Git

Guia Completo de Git: Comandos Avançados, Fluxos e Recuperação de Histórico

Descubra o que realmente pode transformar sua rotina de versionamento. Conheça comandos que vão além do básico e aumentam a segurança e produtividade com o Git.

CrazyStack
14 min de leitura
gitversionamentoavançadofluxo git

Por que isso é importante

O Git é uma das principais ferramentas para desenvolvedores de software, tornando possível o controle de versões, a colaboração eficiente e o rastreio seguro de mudanças no código. Conhecer comandos além do básico é essencial para evitar perda de trabalho, desfazer erros sem desespero e manter a qualidade do seu projeto em qualquer cenário real.

Primeiros Passos: Inicializando um Repositório Git

O ponto de partida para qualquer projeto sob versionamento é a inicialização do Git. Esse processo cria a estrutura mínima para começar a rastrear arquivos, versões e colaborar em equipe.

1
Passo 1: Crie uma pasta para seu projeto no sistema operacional.
2
Passo 2: Acesse o terminal, navegue até a pasta e execute git init. Isso cria o repositório local.

⚠️Atenção

Após inicializar o Git, todos os arquivos e subpastas dentro desse diretório passarão a ser monitorados. Qualquer ação, mudança ou restauração deve ser realizada dentro desse contexto para evitar conflitos ou erros.

Do Básico ao Diário: Git Add, Commit e Log

O ciclo clássico do Git gira em torno de três comandos: adicionar alterações, registrar um ponto no histórico e consultar registros antigos. Dominando-os, você evita perda de progresso e consegue entender a evolução do seu projeto.

1
Passo 1: Em seu editor (ex: VS Code), crie e modifique arquivos normalmente.
2
Passo 2: Execute git add <arquivo> para preparar mudanças para o commit.
3
Passo 3: Salve o ponto de restauração usando git commit -m "Mensagem clara".
4
Passo 4: Use git log para ver o histórico de alterações.

ℹ️Dica

Mantenha mensagens de commit sempre claras. Isso facilita o rastreio futuro e melhora a colaboração em equipes.

Ajustando Commits: Corrigindo com Git Commit --amend

Pequenos deslizes cometidos logo após um commit não precisam poluir o histórico. Use git commit --amend para ajustar detalhes, tornar a mensagem mais precisa ou incluir arquivos esquecidos.

1
Passo 1: Faça as correções desejadas nos arquivos.
2
Passo 2: Execute git add <arquivo corrigido> se necessário.
3
Passo 3: Use git commit --amend para incorporar as mudanças ao commit anterior. Adicione --no-edit se quiser manter a mensagem.

⚠️Atenção ao Hash

O comando --amend altera o hash daquele commit. Isso significa que ele substitui o commit anterior. Use apenas em commits ainda não compartilhados em repositórios remotos para evitar problemas de sincronização.

Explorando Alterações: Git Show e Git Diff

Compreendendo o Histórico Visualmente

Para investigar mudanças feitas em cada commit, utilize git show. Ele apresenta todo o conteúdo alterado e contexto daquele ponto do projeto. Já git diff compara o que está alterado no seu diretório em relação ao último commit, fundamental para revisões antes de enviar alterações ao histórico.

1
Dica para git show: Combine com o hash do commit para explorar alterações específicas.
2
Dica para git diff: Execute antes de dar commit para evitar a inclusão de mudanças desnecessárias.

Produtividade

Utilizar git diff antes do commit reduz drasticamente erros, evitando que código quebrado ou não terminado entre para o histórico do projeto.

Branches: Organização e Paralelismo no Projeto

Uma das maiores forças do Git é permitir trabalhos paralelos com o uso de branches. Cada branch representa uma linha de desenvolvimento independente para features, correções ou experimentos.

1
Passo 1: Crie uma nova branch com git checkout -b minha-feature.
2
Passo 2: Realize alterações, commits e teste o código isoladamente.
3
Passo 3: Ao voltar à branch principal (master ou main), as alterações ainda não integram o projeto principal.

⚠️Atenção com Confusões

Modificações feitas em uma branch não aparecem em outras, a menos que você faça merge, rebase ou utilize comandos específicos para incorporar mudanças.

Incorporando Mudanças Específicas: O Poder do Git Cherry-Pick

O git cherry-pick é valioso quando você precisa incorporar commits isolados de uma branch para outra, sem precisar trazer tudo de uma branch inteira. Ele copia um commit específico para a branch em que você está, mantendo o contexto e evitando bagunça no histórico.

1
Passo 1: Identifique o hash do commit desejado com git log.
2
Passo 2: Troque para a branch de destino com git checkout.
3
Passo 3: Execute git cherry-pick <hash> para importar aquele commit.

ℹ️Importante

O hash do commit na branch de destino será diferente, mas o conteúdo do commit será fiel ao original. Essa estratégia evita merges confusos.

Revisionando o Passado: Entendendo o Git Reflog

O git reflog é a chave para quando você pensa ter perdido um trabalho irrecuperável. Ele rastreia toda a movimentação do HEAD, inclusive resets, amends, merges e desvios de branch, permitindo o retorno a estados anteriores do repositório mesmo após operações destrutivas.

1
Passo 1: Liste eventos com git reflog.
2
Passo 2: Identifique a referência desejada.
3
Passo 3: Volte para o estado selecionado usando git reset --hard <hash> (com cuidado).

Aviso Irreversível

O parâmetro --hard limpa completamente alterações não salvas no Git. Tenha certeza de que não há código importante fora do versionamento antes de executar. Arquivos não adicionados ou não comitados serão perdidos para sempre.

Diferenciando Cherry-Pick e Merge

Cherry-Pick

Copia um commit específico de uma branch para outra.

Prós
  • Mais controle sobre commits importados
  • Evita bagunçar o histórico
  • Ótimo para hotfixes ou pequenas features isoladas
Contras
  • Pode aumentar divergências entre branches
  • Não integra múltiplos commits de uma vez

Merge

Integra todas as alterações de uma branch para outra.

Prós
  • Rápido para integrar várias mudanças
  • Preserva o contexto total da branch
Contras
  • Pode gerar conflitos
  • Histórico pode ficar poluído em alguns fluxos

Recuperando Arquivos Apagados no Git

Deletou um arquivo por engano? Se ele estava sob versionamento, é possível trazê-lo de volta facilmente usando o histórico do Git.

1
Passo 1: Use git log -- <arquivo> para encontrar um commit anterior à exclusão.
2
Passo 2: Refaça a versão desejada com git checkout <hash> -- <arquivo>.

ℹ️Evite Perdas

Enquanto o arquivo tenha sido adicionado e comitado ao menos uma vez, sempre será possível recuperar versões anteriores usando Git.

Ferramentas para Potencializar Workflow com Git

Além da linha de comando, diversas ferramentas facilitam a visualização do histórico e a resolução de conflitos.

GitKraken

Interface gráfica que facilita merges, visualização de branches e histórico completo.

Saiba mais →

Sourcetree

Cliente Git visual gratuito para gerenciamento de repositórios.

Saiba mais →

GitLens

Extensão para VS Code que traz contexto avançado, blame e visualização de histórico no seu editor.

Saiba mais →

Boas Práticas para Nunca Perder Código

Um fluxo de trabalho seguro depende de disciplina e consistência no uso de versionamento. Siga regras simples, mas essenciais, e minimize riscos.

1
1. Commite frequentemente e com mensagens claras.
2
2. Nunca use --amend ou --hard em commits já compartilhados.
3
3. Faça backup de branches antes de alterações críticas.
4
4. Use git diff sempre antes de commitar.

Risco Real

Não versionar corretamente pode levar à perda total de código, especialmente com comandos destrutivos. Em ambientes de equipe, o impacto é multiplicado.

Checklist Final: Seu Git na Prática

Checklist de Implementação

Repositório Git inicializado e configurado.
Compreendeu ciclos de commit, amend e diff.
Aprendeu branching e cherry-pick para fluxos paralelos.
Testou o uso de reflog e reset para reversão segura.
Evitou comandos destrutivos sem necessidade.
Adotou ferramentas gráficas e extensões para produtividade.

Transforme sua carreira

E foi EXATAMENTE por isso que eu criei um curso de Node.js e React chamado CrazyStack. A minha maior necessidade no início da carreira era alguém que me ensinasse um projeto prático onde eu pudesse não só desenvolver minhas habilidades de dev como também lançar algo pronto para entrar no ar no dia seguinte.

Sabe qual era minha maior frustração? Aplicar conhecimentos teóricos em projetos práticos e reais, mas não encontrar ninguém que me ensinasse COMO fazer isso na prática! Era exatamente a mesma frustração que você deve sentir: acumular informação sem saber como implementar na prática.

Assim como você precisa de estratégias claras e implementação prática para ter sucesso, todo desenvolvedor precisa de um projeto estruturado para sair do teórico e partir para a execução. É como ter todas as peças do quebra-cabeça mas não saber como montá-las - você pode ter conhecimento técnico, mas sem um projeto completo, fica difícil transformar esse conhecimento em resultados concretos.

No CrazyStack, você constrói um SaaS completo do zero - backend robusto em Node.js, frontend moderno em React, autenticação, pagamentos, deploy, tudo funcionando. É o projeto que eu queria ter quando comecei: algo que você termina e pode colocar no ar no mesmo dia, começar a validar com usuários reais e até monetizar.

Domine React e Node com o CrazyStack

Aprenda técnicas avançadas de React com nosso curso completo