2011-03-28 66 views
5

我已經在本地做了2個'git commit'。但我沒有推,我可以編輯我的git並將這兩個git commit合併爲1嗎?我該如何結合2'git commit的

+0

可能重複http://stackoverflow.com/questions/5189560/how-can -i-squash-my-last-x-commits-together-using-git) – 2011-03-29 08:31:00

+0

在那裏你可以找到一個很好的答案:http://stackoverflow.com/questions/2563632/how-can-i-merge-two -commits-into-one – 2013-10-13 12:21:54

+0

可能的重複[如何將兩個提交合併爲一個?](https://stackoverflow.com/questions/2563632/how-can-i-merge-two-commits-into-one) – 2017-07-05 20:38:15

回答

11

是的,它是可能的:

你必須先找到犯下這是你要使用的那些前。試想一下,我們想最後兩次提交合並:

git rebase -i HEAD~3 

這將啓動互動底墊的編輯器,是給你的可能性進行提交的所謂的擠壓,它會名單的提交來自一個是三種起動提交前。

請閱讀編輯器窗口中的幫助信息,瞭解如何使用交互式底座。 爲了取消rebase操作,你必須刪除文件中的所有行並保存! 你也不要觸摸提交ID和描述 - 你只需在提交ID從「pick」到「s」之前更改命令(壁球)

另一件事是你絕對正確地提到你沒有推動。首先也是唯一一條git規則是「不重寫已發佈的歷史記錄」。即您不需要重新組織,重新排序或刪除已經推入公共訪問的提交。 對於所有情況都是如此,除非您是唯一一個在該項目上工作的人。

4

如果您已提交併想要添加一些更改,則可以使用git commit --amend這將修改上次提交。如果要做到這一點,而無需通過git的基礎重建的所有的麻煩去,然後:

git checkout --soft HEAD~ 

這將刪除最後一個承諾,而刪除更改,然後

git commit --amend -C HEAD 

將修改最新犯了指數中的新變化。 -C HEAD標誌採用來自頭提交的提交消息,因此您甚至不需要再次添加該消息。