Existem maneiras de alterar a mensagem de confirmações posteriores:
git commit --amend # for the most recent commit
git rebase --interactive master~2 # but requires *parent*
Como você pode alterar a mensagem de confirmação do primeiro commit (que não tem pai)?
git filter-branch --msg-filter
Respostas:
Supondo que você tenha uma árvore de trabalho limpa, você pode fazer o seguinte.
fonte
git rebase --onto HEAD <sha1-of-root> master
.git rebase
.git rebase
aplica confirmações em <branch> (master
) que não estão em <upstream>;HEAD
não está presentemaster
, então sua versão tenta aplicar tudomaster
.git rebase --onto HEAD <sha1-of-root>
mestre, onde<sha1-of-root>
é o mesmo usadogit checkout <sha1-of-root>
. Caso contrário, você terá 2first commit
's.HEAD
garante que todas as confirmações sejam consideradas e que possamos usar a versão de dois parâmetros do rebase para retornar ao master. Observe que esta resposta é anterior à existência da--root
opção de rebase.A partir da versão Git 1.7.12 , agora você pode usar
Documentação
fonte
Para expandir a resposta do ecdpalma , agora você pode usar a
--root
opção para dizerrebase
que deseja reescrever o root / first commit:Em seguida, o commit raiz será exibido na lista rebase TODO e você poderá editar ou reformular:
Esta é a explicação dos docs Git REBASE (grifo meu):
--root
fonte
Apenas para fornecer uma alternativa às respostas de classificação mais alta:
Se você estiver criando um repositório e souber antecipadamente que estará refazendo o "primeiro" commit real no futuro, poderá evitar esse problema completamente fazendo um commit vazio explícito no início:
e só então comece a fazer confirmações "reais". Em seguida, você pode refazer com facilidade a confirmação padrão, por exemplo
git rebase -i HEAD^
fonte
.gitattributes
arquivo em vez de fazer um commit vazio.Você poderia usar
git filter-branch
:fonte
-- --all
commit , e a opção de fato é a chave neste caso para poder também manipular o commit root.