我有一堆需要修改的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”,同样......所以它似乎完全没有效果..
我做错了什么?我有正确的“权利”来写入文件:(
答案 0 :(得分:4)
您无法更改现有提交。那是不可能的。
git commit --amend
实际上做的是,它创建一个新提交,它是您最新提交的副本,也称为HEAD,具有您指定的更改。
然后,这个新提交将替换您当前的HEAD。
-c
参数指定另一个从编辑器复制邮件并在编辑器中编辑的提交。它不会以任何方式影响其他提交。
要执行您真正想做的事情,请参阅http://git-scm.com/book/en/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages