Pergunta

Há formas para alterar a mensagem mais tarde, compromete-se:

git commit --amend                    # for the most recent commit
git rebase --interactive master~2     # but requires *parent*

Como você pode alterar a mensagem de commit do primeiro commit (que não tem pai ou mãe)?

Foi útil?

Solução

Supondo que você tenha uma árvore de trabalho limpa, você pode fazer o seguinte.

# checkout the root commit
git checkout <sha1-of-root>

# amend the commit
git commit --amend

# rebase all the other commits in master onto the amended root
git rebase --onto HEAD HEAD master

Outras dicas

AS VERSÃO GIT 1.7.12, agora você pode usar

git rebase -i --root

Para expandir ecdpalma resposta, agora você pode usar o --root opção para dizer rebase que você quer reescrever o/primeiro commit:

git rebase --interactive --root

Em seguida, a raiz cometer vai aparecer no dou de lista de AFAZERES, e você pode selecionar editar ou reformular isso:

reword <root commit sha> <original message>
pick <other commit sha> <message>
...

Esta é a explicação de --root a partir de o Git rebase docs (ênfase minha):

Realocar todos os compromete-se acessível a partir de <branch>, em vez de limitar-los com um <upstream>. Isso permite que você alterar a raiz commit(s) em um galho.

Apenas para fornecer uma alternativa às respostas mais altas da classificação:

Se você está criando um repositório e saiba antecipadamente que estará se rebelando no topo de seu "primeiro" comprometimento real no futuro, poderá evitar esse problema ao fazer um compromisso vazio explícito no início:

git commit --allow-empty -m "Initial commit"

E só então comece a fazer compromissos "reais". Então você pode facilmente se refletir sobre isso cometer da maneira padrão, por exemplo git rebase -i HEAD^

Você poderia usar git filter-branch:

cd test
git init

touch initial
git add -A
git commit -m "Initial commit"

touch a
git add -A
git commit -m "a"

touch b
git add -A
git commit -m "b"

git log

-->
8e6b49e... b
945e92a... a
72fc158... Initial commit

git filter-branch --msg-filter \
"sed \"s|^Initial commit|New initial commit|g\"" -- --all

git log
-->
c5988ea... b
e0331fd... a
51995f1... New initial commit
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top