2013-06-26 81 views
2

我在工作時使用git-svn來與Subversion版本庫進行交互。我創建了一個分支(我們稱之爲FeatureBranch)來處理新功能,但必須切換回主分支才能處理其他問題。當我開始研究FeatureBranch應該完成的工作時,我忘了重新檢查FeatureBranch,並在實現我所做的工作之前向主分支提交了多個提交。是否可以在git中合併分支並保存歷史記錄?

我原本打算做下面來解決這個問題(我還沒有dcommitted我的改變顛覆,所以他們都聚集在一起爲我所做的最新提交):

git checkout FeatureBranch 
git merge master 
git checkout master 
git reset --hard HEAD~n 

其中n是我想要從主分支中移除的提交數,因爲它們現在位於FeatureBranch中。然而,git合併合併到另一個分支(它顯示爲一個單一的提交)似乎並沒有保留歷史。你如何將git中的某些提交合併到另一個分支,同時保留歷史記錄?我之前聽說過櫻桃挑選,這是我應該查看的功能嗎?

回答

2

是的,你會希望使用git cherry-pick。你會毫不誇張地說,櫻桃挑選每個提交你想要帶回主人。

沒有解釋整個摘櫻桃的過程,這裏有一些Docsgetstarted

+0

謝謝,我會檢查出來。在確認他們是否能工作之前,我總是謹慎地嘗試Git-Svn的新事物 –

+1

這就像一個魅力,謝謝。謝天謝地,我只需要大約8次提交就可以解決問題,而且我還會更加生氣(非常乏味!) –

+0

我的不好,我之前嘗試過,但它說我必須等待 –

0

可以實現與git rebase --onto。詳情請參閱git help rebase

相關問題