2017-01-14 66 views
1

我做了很多提交來測試我的倉庫。現在我想修復我的歷史,而不會丟失數據。我的歷史是這樣的:如何修復git commit歷史而不丟失​​數據?

A -> B -> C -> TEST D -> TEST E 

但它應該是這樣的:

A -> B -> C (C + TEST D + TEST E) 

我該怎麼辦呢? rebasestash可以幫我嗎?

UPD好吧,這是我犯下的歷史:

commit 9f2c2e66d344aa27a5e681eb64c84738f2cd1d49 
Author: babobka <[email protected]> 
Date: Sat Jan 14 23:35:36 2017 +0300 

    Fixed files 

commit 9ab55a4e4352daa9e5c27e9243d79a8c14dd6551 
Merge: b52872c 856ee3f 
Author: bbk <[email protected]> 
Date: Sat Jan 14 23:29:16 2017 +0300 

    Merged in develop (pull request #1) 

    New tests. New project structure. FindBugs plugin. 

commit 856ee3fb4725564c1c5c976eacadb6e21aa2b937 
Author: babobka <[email protected]> 
Date: Sat Jan 14 23:24:02 2017 +0300 

    New tests. New project structure. FindBugs plugin. 

commit b52872c300bde67154cec3b732755a47f9ff76cd 
Author: babobka <[email protected]> 
Date: Mon Jan 9 23:36:02 2017 +0300 

    Very big refactor.Can not remember what was done. 

commit 0b330267150db40fb814bfc21387762d80a99e44 
Author: babobka <[email protected]> 
Date: Tue Jan 3 01:13:05 2017 +0300 

    First commit 

我做git rebase -i 9ab55a4e4352daa9e5c27e9243d79a8c14dd6551 -m 'Rebasing',但我看不到任何變化。仍然是同樣的歷史。

+3

可能重複[壓制我最後一個X使用Git一起提交](http://stackoverflow.com/questions/5189560/squash-my-last-x-commits-together-using-git) – acm

+0

我的理解是你想「壓扁」最後幾個提交到一個?看看這是否有幫助http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html – sinanspd

+0

你是否正在編輯rebase交互模式配置?你是否改變了一些選詞來壓扁? – oklas

回答

1

可以使用rebase命令的交互模式

git rebase -i HEAD~2 

凡HEAD〜2 - 2是你需要進化得只剩操作提交的nuber。 交互模式顯示爲您的短暫幫助。 馬克squash(取代pick字)提交您需要加入togather。

提示:第一次做得更好創建分支,並在分開的布拉奇做。在分離的分支中,您可以檢查結果以更好地瞭解rebase如何工作。如果您遇到一些麻煩或意外的行爲,並且通過結帳原始分支簡單回滾。

相關問題