Como alterar um commit feito no Git que esta no meio da árvore?

( comecei a escrever esse post em 02 de setembro 2008; mas só agora publicando, antes tarde do que nunca =P )

Como alterar um commit feito no Git que esta no meio da árvore?
Fiz essa pergunta pro kov na mesma época que comecei a escrever e essa foi a resposta dele na época:

Primeiro é preciso criar uma tag para identificar o commit que você quer editar.
Nesse exemplo, estou editando o commit 'a9851296d5eb52161fcb151d58f4aaee3f9ce416' e criando a tag 'bad'

git tag bad a9851296d5eb52161fcb151d58f4aaee3f9ce416


Colocar o commit no topo
git checkout bad


Agora é fazer as modificações nescessárias...


Adicionar os arquivos editados no HEAD
git add 'arquivos alterados'


Refazer o commit
git commit --amend


Reconstruir o histórico
git rebase --onto HEAD bad master

git checkout master


Recentemente ele me mostrou outras maneiras mais elegantes. Mas fica pra quem quiser deixar nos comentários =D

This entry was posted on Quarta, Maio 27th, 2009 at 16:48 and is filed under default, desenvolvimento. You can follow any responses to this entry through the RSS or Atom feed. You can (um) comentando...">leave a response, or trackback from your own site.

Trackback link:

Favor ativar Javascript para gerar uma URL de trackback

No trackbacks


O “jeito mais elegante” é usar git rebase -i HEAD~#, onde # é o número de commits que você quer editar (ou até o que você quer editar). Depois que você roda isso, o git abre seu editor com uma coisa mais ou menos assim:

pick fca9692 Only export symbols that should be public
pick 9e4db3a autoreconf run
pick 73bbfc1 Refactor GksuController creation

O mais de baixo é o mais novo. Aí você troca ‘pick’ ali por ‘edit’ ou ‘squash’, ou deixa ‘pick’ mesmo. O edit faz o git ir pro commit que você quer editar. Aí você pode editar ele do jeito que quiser, fazer mais commits que vão ficar depois dele e antes do próximo. Aí quando tiver terminado faz git rebase —continue. O squash é massa, também. Ele pega o commit que c marcou com squash e junta com o anterior.


  
Relembrar suas informações pessoais?

/ Textile


 

  (Registrar seu Nome de Usuário/Login)

Notificar:
Ocultar email:

Aviso: Todas as marcações HTML, exceto <b> and <i> serão removidas do seu comentário. Você pode escrever links simplesmente digitando a URL ou endereço de e-mail.

Categories

Fotos:

www.flickr.com

Tags