如何在git中编辑任何提交的提交消息?

时间:2010-10-15 07:28:46

标签: git commit-message

假设我有3次未提交的提交。现在我想更改第一次或第二次提交的提交消息(使用git commit --amend更改第三次提交的提交消息很简单)。怎么做?

2 个答案:

答案 0 :(得分:6)

这是强大的git rebase -i命令的工作。另外,请参阅Git书籍的Interactive Rebasing部分。

答案 1 :(得分:5)

要回答子问题:前一次提交是否有git commit --amend(而不仅仅是最后一次提交),您可以尝试类似的方式(尚未测试,但Colin O'Dell提及the comments为其编写了一个脚本colinodell/git-amend-old):

git checkout -b tmp
git reset --hard HEAD~2
git commit -amend 
git rebase --onto tmp HEAD@{1} master

那就像:

x---x---x---x---x
                ^
                |
               (master*) (* = current branch)

git checkout -b tmp
x---x---x---x---x
                ^
                |
               (tmp*, master) 

git reset --hard HEAD~2
x---x---x---x---x
        ^       ^
        |       |
      (tmp*) (master) 

git commit -amend 
      y (tmp*) 
     /
x---x---x---x---x
        |       ^
   (HEAD@{1})   |
          (master) 

git rebase --onto tmp HEAD@{1} master
    (tmp)
      y---x'---x' (master*) 
     /
x---x---x---x---x (only referenced in reflog)