Mais
Como mudar o autor do compromisso para um compromisso específico?
Eu quero mudar o autor de um compromisso específico na história. It'não é o último compromisso.
Eu sei sobre esta questão - Como eu mudo o autor de um commit in git?
Mas estou a pensar em algo, onde identifico o compromisso por haxixe ou fascículo curto.
1928
3
Rebase interativo de um ponto mais cedo na história do que o compromisso que você precisa modificar (
git rebase -i
). Na lista de commits sendo rebaseados, altere o texto depick
paraedit
ao lado do hash do que você quer modificar. Então quando o git pedir que você altere o commit, use isto:Por exemplo, se o seu histórico de commit é
A-B-C-D-E-F
comF
comoHEAD
, e você quer mudar o autor deC
eD
, então você...git rebase -i B
(aqui está um exemplo do que você verá após executar o comandogit rebase -i B
)A
, utilizegit rebase -i --root
.C
eD
depick
paraedit
.git commit --amend --author="Author Name "
git commit --amend --author="Author Name "
novamentegit push -f
para actualizar a sua origem com os commits actualizados.As respostas na pergunta a que se ligou são boas respostas e cobrem a sua situação (a outra pergunta é mais geral uma vez que envolve a reescrita de múltiplos compromissos).
Como uma desculpa para experimentar o
git filter-branch
, escrevi um script para reescrever o nome do autor e/ou e-mail do autor para um determinado compromisso:Ao fazer
git rebase -i
há esta parte interessante no documento:A-B-C-D-E-F
,B
eD
(= 2 commits),então você pode fazer:
git config user.email "correct@new.email"
git rebase -i B^
seleciona o pai de
B`.pick
para osquash
para esses.Exemplo do que
git rebase -i B^
lhe dará:mudar isso para:
Ele o levará a editar as mensagens:
e você pode simplesmente remover as primeiras linhas.