Como posso esmagar commits no git?

6

Eu quero simplesmente esmagar um monte de commits git que não são mais necessários. Eu tentei seguir a documentação do site , mas acabei com o git dizendo que há nada para esmagar. Eu só tenho um ramo, então eu segui essa seção. Alguma idéia?

    
por Walter 20.04.2011 / 22:09

1 resposta

8

Se eu estivesse fazendo, usaria "rebase". Supondo que você tenha sua filial registrada, e que seja ramificada do mestre, faça

git rebase -i master

Isso permitirá que você modifique os commits do master para o seu branch atual. No seu caso, substitua pick por s (por squash ) ou f (por fixup , que é uma squash que elimina a mensagem de confirmação do commit esmagado). Salve e saia (ZZ no Vim) e rebase fará sua mágica. Rebase é uma solução mais geral, pois na mesma operação você pode remover, reordenar e reformular os commits.

As configurações de rebase serão abertas no Vim ou no editor que você definir na variável de ambiente EDITOR . No Vim, navegue até o início da linha com o commit que você deseja esmagar (com as teclas de seta ou mouse), cw para excluir pick e entrar no modo de inserção, f para correção ou s para squash ZZ para salvar e sair.

Como observação, o link que você deu sugere que você alinhe seu ramo de recursos em um único commit. Na minha opinião, esta é uma ideia terrível. As confirmações devem representar um conjunto significativo de alterações. Uma ramificação é o conjunto dessas alterações que representa um recurso. Esmagar tudo em um commit enorme significa que será mais difícil para outros desenvolvedores seguirem suas mudanças.

    
por 20.04.2011 / 22:14

Tags