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

Git Merge vs Git Rebase com GitLens: entenda a diferença praticando

Debug, merge, bisect e produtividade no Git usados direto no VSCode com GitLens

CrazyStack
18 min de leitura
GitGitLensVSCodeDebug

Por que isso é importante

Trabalhar com Git de forma eficiente pode economizar horas do seu ciclo de desenvolvimento. Usar comandos como Merge, Rebase e Bisect da forma correta garante rastreabilidade, agilidade na resolução de bugs e gestão eficiente de branches, além de facilitar colaboração em equipe.

Entendendo a diferença entre Git Merge e Git Rebase

Merge e Rebase são formas distintas de integrar mudanças de uma branch para outra.

Git Merge

Integra uma branch mantendo o histórico paralelo de commits.

Prós
  • Preserva histórico original
  • Evita reescrita de commit
Contras
  • Histórico com múltiplos ramos
  • Dificulta leitura linear

Git Rebase

Reposiciona os commits da branch como se tivessem sido feitos após a branch base

Prós
  • Histórico linear e limpo
  • Facilita revisão de código
Contras
  • Reescreve histórico
  • Pode causar conflitos complexos

Debug do histórico com Git Log e Blame

Detectar bugs só é útil se você conseguir rastrear quando e quem introduziu o erro. Para isso, usamos comandos como git log, git blame e o poderoso git log -p focado em arquivos específicos.

⚠️Atenção

Evite usar git log genérico em projetos grandes. Prefira investigar arquivos diretamente com parâmetros restritivos como --follow e -L.

Uma forma prática é inspecionar commits que afetaram diretamente a função com problema. Com isso, você economiza tempo e chega no autor do erro e commit exato com facilidade.

Automatizando a detecção com Git Bisect

Identifique o primeiro commit com bug de forma programática

Git Bisect automatiza a busca binária no histórico entre um commit conhecido como bom e outro como ruim. A cada passo, ele pede sua avaliação para determinar a origem exata do bug.

1
Passo 1: Inicie a sessão com git bisect start
2
Passo 2: Defina o commit bom e o ruim com git bisect good e git bisect bad
3
Passo 3: Teste a versão atual e marque como good ou bad até encontrar o causador
4
Passo 4: Finalize com git bisect reset para restaurar o estado atual

ℹ️Atenção

Você precisa de um teste confiável para avaliar cada checkout do bisect. Testes automatizados ajudam a acelerar o processo.

Resolvendo Conflitos de Merge com Visual Studio Code

Ao tentar integrar diferentes branches você pode encontrar conflitos. Eles são apresentados de forma visual no VSCode, tornando a resolução mais intuitiva.

Importante

O VSCode oferece opções como 'Aceitar alterações atuais', 'incoming', ou ambas. Escolha com base na lógica da aplicação, não apenas em quem escreveu o commit.

Usando GitLens para inspecionar e resolver bugs sem terminal

GitLens transforma o Git em uma experiência visual interativa dentro do VSCode. Você pode navegar commits, histórico, blame e até realizar merges e rebases com poucos cliques.

GitLens

Extensão para VSCode com navegação visual e comandos do Git por interface

Saiba mais →

VSCode

Editor com suporte nativo e extensão para Git avançado

Saiba mais →

Corrigindo um bug real: cálculo quebrado

No exemplo prático, uma função de adição retornava a - b ao invés de a + b. O diagnóstico seguiu: testes, logs e blame para descobrir o erro.

1
Passo 1: Reproduza o bug executando a função manualmente
2
Passo 2: Localize a função e encontre onde está sendo chamada
3
Passo 3: Use git log -p NOME_DO_ARQUIVO ou git blame
4
Passo 4: Detecte o commit e autor exatos do bug. Corrija e submeta em branch separada

Branching estratégico: criando e integrando correções

Crie sempre uma branch com nome claro e objetivo. Após corrigir e testar, use merge ou rebase para integrar, dependendo do fluxo do time.

ℹ️Dica

Padronize nomes como fix/... para correções e feature/... para funcionalidades. Facilita tracking e leitura do histórico.

Abordagem moderna: abandonando o terminal com GitLens

A extensão GitLens fornece diffs, blame, bisect simplificado e histórico interativo na interface do VSCode. Ideal para desenvolvedores que preferem produtividade visual.

⚠️Atenção

Ainda é importante conhecer os comandos nativos do Git. GitLens é uma camada sobre eles.

Integração com outras ferramentas do fluxo

Quer integrar Git com GitHub, CI/CD e Pull Requests? GitLens tem suporte para links diretos, e commits podem ter triggers acionados em pipelines.

Conclusão: produtividade 10x com Git bem dominado

Saber navegar, debugar e resolver problemas no Git te torna um engenheiro mais valioso. Automatize onde for possível, visualize com GitLens e teste cada mudança. Git é sua máquina do tempo – saiba pilotar.

Checklist de Implementação

Entendeu a diferença entre merge e rebase
Aprendeu a usar git blame e log -p para rastrear bugs
Usou git bisect para encontrar o commit quebrado
Resolveu conflitos de merge manualmente via VSCode
Configurou e usou GitLens integrado no Visual Studio Code
Criou prática com branches fix/ e feature/ separadamente
Fez merge ou rebase correto de acordo com o fluxo do time

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