2014-02-05 52 views
1

我有一堆需要修改的git提交。我沒有任何推他們還沒有,我只是在做:「git commit --amend -c <commit>」不保存更改

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的承諾--amend -c [提交編號]」

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

3)編輯出現,I型 「i」 的插入,然後添加一些文本的消息,然後鍵入「:wq」保存並退出...

但是然後編輯器不會保存我對提交消息所做的更改... 我做的「git log」和消息仍然看起來一樣!它仍然說「消息1」,儘管我將其更改爲「消息1更多文本」...

當我重新運行同一命令的「git commit --amend ...」時,它仍然會顯示「消息1「,也...所以它似乎已經絕對沒有效果。

我做錯了什麼?我有正確的「權利」寫入文件:(

+1

我想你想'git的變基-i HEAD〜5' ... – twalberg

回答

3

你不能改變現有的提交。這是不可能的。

實際上做了什麼git commit --amend,就在於它創建了一個新的提交是副本你最新的承諾,也被稱爲頭,用您指定的變化。

這種新的承諾,然後替換當前的HEAD。

-c參數指定另一個承諾從消息,編輯在編輯器中複製。它不會以任何方式影響其他提交。

做你真正想做的事,看http://git-scm.com/book/en/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages

+0

哦!當這真是無賴。感謝您解決這個問題!^_^ – Kayvar

+1

@Kayvar:見http://git-scm.com/book/en/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages –