Sobes.tech
Junior

Como combinar vários commits em um só usando Git?

sobes.tech IA

Resposta da IA

Para combinar vários commits em um usando Git, utilize o comando git rebase -i <commit-ish>.

  1. Identifique o commit até o qual deseja combinar. Pode ser um hash de commit, um branch ou uma tag.
  2. Execute o comando git rebase -i <commit-ish>. Por exemplo, para combinar os últimos 3 commits:
    git rebase -i HEAD~3
    
  3. Uma editor de texto será aberto com a lista de commits. O primeiro commit na lista (superior) deve ter a palavra pick. Os demais commits que deseja combinar com o primeiro, devem ser alterados de pick para squash ou s.
    pick abcd123 Commit inicial
    squash efgh456 Parte 1 da funcionalidade A
    squash ijkl789 Parte 2 da funcionalidade A
    ...
    
  4. Salve e feche o editor.
  5. Um novo editor será aberto para criar a mensagem do commit. Combine ou edite as mensagens dos commits conforme sua preferência para criar uma mensagem coerente para o novo commit combinado.
    // Mensagem para o novo commit combinado
    
    // Isto é uma combinação de 3 commits.
    
    // Commit inicial
    // Parte 1 da funcionalidade A
    // Parte 2 da funcionalidade A
    
  6. Salve e feche o editor. O Git realizará a combinação dos commits.

Se o branch em que você está já foi enviado para um repositório remoto, será necessário fazer um push forçado com a flag -f ou --force-with-lease.

git push origin <seu_branch> -f

Isso é necessário porque o histórico de commits foi alterado. O push forçado pode ser perigoso se outros desenvolvedores já estiverem trabalhando nesse branch. Sempre verifique se é seguro fazer um push forçado.

Alternativamente, você pode usar as flags --fixup e --autosquash ao fazer commits, e depois executar git rebase -i --autosquash <commit-ish> para uma fusão automática.