( 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
Gustavo Noronha Silva
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.
best online slots
best online slots
best online slots