Receio que as respostas aqui não estejam lhe dando avisos suficientemente ruins. isso vai criar uma enorme confusão se alguém tem puxado o seu histórico, enquanto isso - tudo o mais ainda se eles já cometeram novo trabalho em cima dele!
Eevee
Vou usá-lo com justa causa, tenho um caso mais simples aqui, sou o único que utilizo esse repositório.
Tuyen Pham
3
Info: Isso já é solicitado (possivelmente várias vezes) no estouro de pilha .
User202729
Respostas:
20
Para editar as mensagens de confirmação de uma série de confirmações, eu corro
git rebase -i firstsha
onde firstshaé um identificador para o commit pai do primeiro commit que quero editar. (Você pode usar qualquer referência válida aqui, git rebase -i HEAD~4mostrará os quatro últimos commits.)
No editor que é aberto, altere todas as entradas “pick” para “reformular” nos commits que você deseja modificar e feche o editor; você será solicitado a inserir mensagens de confirmação para todas as confirmações que você escolheu.
Note que este irá alterar a árvore de cometer, porque os hashes das commits vai mudar. Você precisará forçar a sua nova árvore ou empurrá-la para um novo ramo. Ele também estragará as mesclagens, portanto, evite editar confirmações de mesclagem.
Para editar rapidamente apenas a última confirmação, execute
git commit --amend
(mas tenha cuidado com qualquer coisa preparada para confirmar).
Como isso afetaria a árvore de consolidação, criará uma linha vertical intermediária na árvore de consolidação? Eu tinha apenas uma árvore de confirmação de linha vertical agora e mais de 100 mensagens precisam ser alteradas.
Tuyen Pham
3
Ele não criará uma nova "linha" na sua árvore de confirmação, mudará todos os commits. Se seu histórico for linear no momento, ele permanecerá linear.
Stephen Kitt
Depende. Você está usando sozinho e não está enviando para um servidor? Então não, apenas uma "linha". Mas, caso contrário, pode haver duas e, com base nas suas respostas para as duas primeiras, podemos ajudá-lo a se livrar da antiga "linha".
Captain Man
1
Rebase tem uma bandeira para lidar com fusões (eu acho que é preserve-merges)
Se você deseja alterar apenas a git commitmensagem anterior , basta usar o seguinte:
git commit --amend
E faça as alterações desejadas no commit anterior e salve as edições.
No entanto, se você precisar alterar confirmações antigas, precisará usar rebase.
git rebase -i HEAD~N
onde N é igual ao número de confirmações que você deseja retornar, por exemplo, 2 ou 12 ou 6, etc. etc.
Aqui você deve obter um editor de texto com seus commit. Mude a opção de pickpara rewordpara alterar a mensagem.
Depois de identificar todos os commits que você deseja alterar e alterar adequadamente suas opções, salve e feche o editor. Em seguida, faça as alterações em cada mensagem de confirmação. Quando estiver satisfeito, você pode executar:
git push --force
E você deve ter mantido seu histórico do git, embora com valores diferentes de hash, porque você fez as alterações necessárias que deseja. Aqui estão alguns links adicionais que você deve conferir:
Se você "reformular", não precisará " commit --amend", a menos que atrapalhe o processo de confirmação de alguma forma.
Stephen Kitt
Obrigado, aqui estão as etapas que eu irei executar conforme meu entendimento em sua postagem: 1. faça com git rebase -i firstshaque firstshao hash do commit pai seja o commit que eu gostaria de mudar a mensagem, depois no editor, mude pickpara reword, enternova mensagem e emita git rebase --continuee fazer git push --force?
Tuyen Pham
@StephenKitt, acabei de perceber sua resposta, eu estava fazendo a minha quando você enviou a sua. Vou seguir seu conselho e procurar fazer essas edições. Se for mais apropriado, posso mesclar minha resposta à sua adicionando os links à sua, se você achar que seria mais adequado para essa pergunta do que ter várias respostas semelhantes.
kemotep
@TuyenPham, você só precisa saber que git rebase -i HEAD~NN é o número de confirmações que você deseja enviar . Alterar todas as opções que deseja editar a mensagem de de cometer picka reword, salve este arquivo, faça as alterações a cada um desses comprometer os arquivos e salvar aqueles. Quando estiver confiante de que está pronto, você só precisa git push --force [Name of git branch you are were working on]. Você sempre pode voltar e fazer isso de novo ou em etapas.
Respostas:
Para editar as mensagens de confirmação de uma série de confirmações, eu corro
onde
firstsha
é um identificador para o commit pai do primeiro commit que quero editar. (Você pode usar qualquer referência válida aqui,git rebase -i HEAD~4
mostrará os quatro últimos commits.)No editor que é aberto, altere todas as entradas “pick” para “reformular” nos commits que você deseja modificar e feche o editor; você será solicitado a inserir mensagens de confirmação para todas as confirmações que você escolheu.
Note que este irá alterar a árvore de cometer, porque os hashes das commits vai mudar. Você precisará forçar a sua nova árvore ou empurrá-la para um novo ramo. Ele também estragará as mesclagens, portanto, evite editar confirmações de mesclagem.
Para editar rapidamente apenas a última confirmação, execute
(mas tenha cuidado com qualquer coisa preparada para confirmar).
fonte
preserve-merges
)O que você está procurando é
git rebase
.Se você deseja alterar apenas a
git commit
mensagem anterior , basta usar o seguinte:E faça as alterações desejadas no commit anterior e salve as edições.
No entanto, se você precisar alterar confirmações antigas, precisará usar
rebase
.onde N é igual ao número de confirmações que você deseja retornar, por exemplo, 2 ou 12 ou 6, etc. etc.
Aqui você deve obter um editor de texto com seus commit. Mude a opção de
pick
parareword
para alterar a mensagem.Depois de identificar todos os commits que você deseja alterar e alterar adequadamente suas opções, salve e feche o editor. Em seguida, faça as alterações em cada mensagem de confirmação. Quando estiver satisfeito, você pode executar:
E você deve ter mantido seu histórico do git, embora com valores diferentes de hash, porque você fez as alterações necessárias que deseja. Aqui estão alguns links adicionais que você deve conferir:
7.6 Git Tools - Histórico de reconfiguração Ajuda do
GitHub - Alterando uma mensagem de confirmação
StackOverflow - Pergunta sobre a alteração de mensagens de confirmação antigas
fonte
commit --amend
", a menos que atrapalhe o processo de confirmação de alguma forma.git rebase -i firstsha
quefirstsha
o hash do commit pai seja o commit que eu gostaria de mudar a mensagem, depois no editor, mudepick
parareword
,enter
nova mensagem e emitagit rebase --continue
e fazergit push --force
?git rebase -i HEAD~N
N é o número de confirmações que você deseja enviar . Alterar todas as opções que deseja editar a mensagem de de cometerpick
areword
, salve este arquivo, faça as alterações a cada um desses comprometer os arquivos e salvar aqueles. Quando estiver confiante de que está pronto, você só precisagit push --force [Name of git branch you are were working on]
. Você sempre pode voltar e fazer isso de novo ou em etapas.