“git commit --amend -c <commit>”不保存更改</commit>

时间:2014-02-05 18:36:42

标签: git bash

我有一堆需要修改的git提交。我还没推过任何一个,我只是在做:

git add .
git commit -m "message 1"
git add .
git commit -m "message 2"
git add .
git commit -m "message 3"
git add .
git commit -m "message 4"

现在我正在尝试为所有这些提交添加一行 ..

我以为你会这样做:

1)获取提交号码:

$] git log
commit 931824f116637cf0f4d7dea98828f9cdfc6b9157
Author: ...
Date:   Tue Feb 4 17:30:19 2014 -0800

    message 1

commit 726adac71a0d8fdac4f62663e6081f1e784e4805
Author: ...
Date:   Tue Feb 4 16:25:17 2014 -0800

    message 2

commit d8aab763f2d2603fb1935648f1ffe80e26039209
Author: ...
Date:   Tue Feb 4 10:53:19 2014 -0800

    message 3

commit 931824f116637cf0f4d7dea98828f9cdfc6b9157
Author: ...
Date:   Tue Feb 4 17:30:19 2014 -0800

    message 4

2)执行“git commit --amend -c [commit number]”

git commit --amend -c 931824f116637cf0f4d7dea98828f9cdfc6b9157
git commit --amend -c 726adac71a0d8fdac4f62663e6081f1e784e4805
git commit --amend -c d8aab763f2d2603fb1935648f1ffe80e26039209
git commit --amend -c 931824f116637cf0f4d7dea98828f9cdfc6b9157

3) 编辑器出现 时,我输入“i”进行插入,然后添加一些文本到消息,然后键入“:wq”以保存并退出...

但是编辑器没有保存我对提交消息所做的更改... 我做“git log”并且消息看起来仍然相同!它仍然说“消息1”,尽管我将其更改为“消息1更多文本”...

当我为同一个命令重新运行“git commit --amend ...”时,它仍然会显示“消息1”,同样......所以它似乎完全没有效果..

我做错了什么?我有正确的“权利”来写入文件:(

1 个答案:

答案 0 :(得分:4)

您无法更改现有提交。那是不可能的。

git commit --amend实际上做的是,它创建一个新提交,它是您最新提交的副本,也称为HEAD,具有您指定的更改。

然后,这个新提交将替换您当前的HEAD。

-c参数指定另一个从编辑器复制邮件并在编辑器中编辑的提交。它不会以任何方式影响其他提交。

要执行您真正想做的事情,请参阅http://git-scm.com/book/en/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages