Apidog

Plataforma Colaborativa All-in-one para Desenvolvimento de API

Design de API

Documentação de API

Depuração de API

Mock de API

Testes Automatizados de API

Como Cancelar Commits do Git Usando o Comando Rebase

@apidog

@apidog

Updated on março 28, 2025

Git é um dos sistemas de controle de versão mais utilizados no desenvolvimento de software. À medida que você trabalha em projetos, inevitavelmente fará commits que mais tarde deseja desfazer, modificar ou remover completamente. Este tutorial se concentra especificamente em como cancelar commits do Git usando o comando rebase, que oferece opções poderosas para manipular seu histórico de commits.

Se você acidentalmente cometeu informações sensíveis, incluiu código quebrado ou simplesmente quer limpar seu histórico de commits, entender como cancelar commits do Git é uma habilidade essencial para todo desenvolvedor.

Otimize seu Desenvolvimento de API com Apidog

botão

Embora gerenciar seus commits do Git de forma eficaz seja crucial para o controle de versão, ter as ferramentas certas para desenvolvimento e teste de API é igualmente importante. Considere mudar para Apidog, a melhor alternativa ao Postman no mercado hoje.

Apidog combina documentação de API, design, simulação, teste e colaboração em uma única plataforma, eliminando a necessidade de alternar entre várias ferramentas.

Com sua interface intuitiva, funcionalidades de sincronização automática e recursos abrangentes, Apidog melhora a produtividade e otimiza todo o ciclo de vida do desenvolvimento de API.

À medida que mergulhamos nas técnicas de rebase do Git, lembre-se de que adotar ferramentas eficientes como o Apidog pode otimizar ainda mais seu fluxo de trabalho de desenvolvimento.

botão

Entendendo a Estrutura do Commit do Git

Antes de mergulhar nas técnicas de cancelamento, vamos revisar como o Git armazena as informações do commit. Cada commit do Git:

  1. Possui um identificador hash único
  2. Pointa para seu(s) commit(s) pai
  3. Contém metadados (autor, data, mensagem do commit)
  4. Armazena uma instantânea do seu código naquele momento

Quando você precisa cancelar um commit do Git, você está essencialmente querendo alterar essa cadeia de commits de alguma forma. Dependendo de suas necessidades específicas, há várias abordagens que você pode tomar.

Git Revert vs. Git Reset vs. Git Rebase: Escolhendo a Ferramenta Git Certa

Existem três maneiras principais de cancelar um commit do Git:

1. Git Revert

git revert HEAD

Isso cria um novo commit que desfaz as alterações de um commit anterior. Seu commit original permanece na história, mas suas alterações são revertidas.

Melhor para: Quando você deseja manter um registro de que o commit ocorreu, mas desfazer seus efeitos. Esta é a opção mais segura ao trabalhar com repositórios compartilhados.

2. Git Reset

git reset --soft HEAD^

Isso move o ponteiro do seu branch para um commit anterior. A flag --soft mantém suas alterações em staging, enquanto --hard as descartaria completamente.

Melhor para: Quando você deseja remover completamente commits recentes da história e ainda não compartilhou seu trabalho.

3. Git Rebase

git rebase -i HEAD~n  # onde n é o número de commits a mostrar

Isto permite manipular o histórico de commits de várias maneiras, inclusive deletando commits completamente.

Melhor para: Usuários avançados do Git que desejam controle preciso sobre seu histórico de commits.

O Comando Git Rebase: Uma Ferramenta Poderosa de Manipulação de Histórico

O comando rebase é um dos recursos mais poderosos do Git. Ao contrário do merge, que cria um novo commit para integrar alterações, o rebase reescreve o histórico de commits aplicando os commits sobre outro commit base.

O rebase interativo (-i flag) é particularmente útil para cancelar commits, pois permite que você:

  • Delete commits
  • Junte múltiplos commits
  • Reordene commits
  • Edite mensagens de commits
  • Divida commits

Embora poderoso, o rebase deve ser usado com cautela, pois reescreve o histórico do Git, o que pode criar problemas em ambientes colaborativos.

Como Cancelar um Commit do Git Usando Git Rebase

Vamos passar pelo processo de cancelar um commit do Git usando o comando rebase:

Passo 1: Iniciar uma Sessão Interativa de Rebase do Git

Primeiro, determine quão longe você precisa ir na história. Se você deseja cancelar os três últimos commits, usaria:

git rebase -i HEAD~3

Isso abrirá seu editor de texto padrão com uma lista de commits, sendo o mais recente no final:

pick f2a9770 Adicionar recurso X
pick c69a283 Corrigir bug no recurso X
pick 7c6b236 Atualizar documentação

Passo 2: Deletar o Commit do Git

Para cancelar um commit, mude a palavra "pick" para "d" (ou "drop") no commit que você deseja remover:

pick f2a9770 Adicionar recurso X
d c69a283 Corrigir bug no recurso X
pick 7c6b236 Atualizar documentação

Neste exemplo, estamos removendo o commit "Corrigir bug no recurso X" enquanto mantemos os outros dois.

Passo 3: Salvar e Sair

Salve o arquivo e feche o editor. O Git processará suas instruções e aplicará as mudanças.

Passo 4: Resolver Quaisquer Conflitos do Git

Se houver conflitos entre commits após remover um commit, o Git pausará o processo de rebase e pedirá para você resolvê-los. Após resolver os conflitos:

git add .
git rebase --continue

Passo 5: Forçar Push se Necessário

Se você já enviou os commits que agora cancelou, precisará forçar o push para atualizar o branch remoto:

git push --force-with-lease

AVISO: O push forçado reescreve o histórico no repositório remoto, o que pode causar problemas para outros desenvolvedores que puxaram o histórico antigo. Use o push forçado somente quando tiver certeza de que não interromperá o trabalho dos outros.

Técnicas Avançadas de Git Rebase para Gerenciamento de Commits

Além de simplesmente cancelar commits, o rebase interativo oferece várias outras opções:

Juntando Commits do Git

Você pode combinar múltiplos commits em um:

pick f2a9770 Adicionar recurso X
squash c69a283 Corrigir bug no recurso X
pick 7c6b236 Atualizar documentação

Isto combinará o commit "Corrigir bug" no commit "Adicionar recurso".

Reordenando Commits do Git

Basta mudar a ordem das linhas no editor de rebase:

pick 7c6b236 Atualizar documentação
pick f2a9770 Adicionar recurso X

Editando Commits do Git

Use edit em vez de pick para pausar o rebase em um commit específico:

pick f2a9770 Adicionar recurso X
edit c69a283 Corrigir bug no recurso X
pick 7c6b236 Atualizar documentação

Quando o rebase alcançar este commit, o Git para e permite que você modifique o commit antes de continuar.

Riscos do Git Rebase e Melhores Práticas

Riscos de Usar o Git Rebase

  1. Alterações Irreversíveis: Ao contrário do merge, o rebase reescreve o histórico de commits, dificultando a recuperação de erros.
  2. Push Forçado Necessário: Após rebase de commits enviados, você precisará forçar o push, o que pode sobrescrever mudanças de outros.
  3. Alteração do Commit: O rebase muda os hashes dos commits, o que significa que os commits originais são substituídos por novos.
  4. Conflitos: Rebases complexos podem levar a múltiplas etapas de resolução de conflitos.

Melhores Práticas do Git Rebase

Crie Branches de Backup: Antes de tentar operações de rebase complexas, crie uma branch de backup.

git branch backup-before-rebase

Rebase Apenas Commits Não Enviados: Como regra geral, evite rebase de commits que foram enviados a um repositório compartilhado.

Use -force-with-lease em vez de -force: Isso fornece uma verificação de segurança para evitar sobrescrever alterações de outros.

git push --force-with-lease

Pratique em um Repositório Sandbox: Se você é novo em rebase, pratique em um repositório de testes antes de usá-lo em projetos importantes.

Rebase Apenas Suas Próprias Branches de Recursos: Evite rebase de branches em que vários desenvolvedores estão trabalhando.

Quando Usar Cada Método de Cancelamento do Git

  • Use Git Revert quando:
  • Você precisa desfazer alterações, mas manter um registro do commit original
  • Você está trabalhando em uma branch compartilhada como main/master
  • Você deseja a opção mais segura
  • Use Git Reset quando:
  • Você deseja remover completamente commits recentes
  • Você ainda não compartilhou seus commits com outros
  • Você está trabalhando em uma branch de recursos local
  • Use Git Rebase quando:
  • Você deseja controle detalhado sobre seu histórico de commits
  • Você precisa limpar seu histórico de commits antes de compartilhar
  • Você está confortável com operações avançadas do Git

Git Rebase vs. Git Merge: Entendendo a Diferença

Ainda que não esteja diretamente relacionado ao cancelamento de commits, entender a diferença entre rebase e merge ajuda a esclarecer porque o rebase é poderoso para manipulação do histórico:

  • Merge cria um novo commit que combina alterações de diferentes branches, preservando todo o histórico de ambas as branches.
  • Rebase reescreve o histórico movendo commits de uma branch para outra, criando um histórico linear em vez de um ramificado.

Essa diferença é fundamental para entender por que o rebase pode ser usado para cancelar commits—não adiciona apenas novos commits; reescreve o histórico.

Conclusão

O comando Git rebase é uma ferramenta poderosa para cancelar commits e manter um histórico de commits limpo e significativo. Embora exija cuidado e atenção para ser usado corretamente, dominar o rebase proporciona controle preciso sobre seu histórico do Git.

Lembre-se de que a abordagem mais segura depende de sua situação específica:

  • Se você compartilhou seu trabalho, considere usar git revert
  • Se você está trabalhando localmente, git reset ou git rebase podem ser apropriados
  • Sempre crie branches de backup antes de tentar operações complexas no Git

Ao entender as várias abordagens para cancelar commits do Git, você estará melhor preparado para lidar com erros e manter um histórico de repositório limpo. Pratique essas técnicas em um ambiente seguro até se sentir confortável aplicá-las em seus projetos reais.