2013-07-25 132 views
29

我在git倉庫中有一個開發分支和一個功能分支。我添加了一個提交來開發,現在我希望將該提交合併到我的功能分支。如果我這樣做如何合併git提交開發分支到一個功能分支

git checkout feature 
git merge develop 

我最終以合併提交。由於我會經常將新的提交合併到我的特性分支,所以我想避免所有這些不必要的合併提交。我看到這個answer,建議做一個git rebase develop,但它最終倒回我的分支路太遠,並且rebase失敗。

更新: 我最終什麼事做了

git checkout feature 
git merge develop # this creates a merge commit that I don't want 
git rebase # this gets rid of the merge commit but keeps the commits from develop that I do want 
git push 

更新:我只注意到,原來承諾的發展獲得一個不同的散列當我撤併然後重訂新特性分支。我不認爲這就是我想要的,因爲最終我會將功能合併回開發中,而且我猜這樣做不會很好。

+0

嗯,我知道你可以在你重新綁定的時候「擠壓」你的提交,作爲在你的分支上沒有這麼多提交的一種方式。查看http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html。 – Houdini

+4

重新激活*是*答案,如果它不適合你,還有另一個問題你應該問一下*爲什麼*它不起作用。 – meagar

回答

29

要將一個分支集成到另一個分支,您必須合併或重新綁定。由於只對未引用其他任何地方的提交進行重新綁定(不合併到其他本地分支;未推送到任何遠程),因此合併通常會更好。

如果您的功能分支純粹是本地的,您可以在開發之前重新綁定它。然而,理解rebase是如何工作還需要一定的時間,在這之前,意外地發生重複或丟失的提交非常容易。合併提交可能看起來很嘈雜,但合併保證始終是安全和可預測的。

爲了更好的視野,嘗試在圖表上一併記錄的一切:

git log --all --graph --oneline --decorate 

這也是值得考慮是否真的需要develop提交合併爲feature。通常他們是可以單獨離開的東西,直到feature稍後合併成develop

如果您經常發現您確實需要develop代碼那麼這可能表明您的功能分支太長時間運行。理想情況下,功能應該以可以獨立工作的方式拆分,而不需要定期整合。

11

如果你只想要一個從develop分支提交就可以櫻桃採摘它在你的feature分支:

git checkout feature 
git cherry-pick -x <commit-SHA1> 

,提交將被用作在你的分支之上的新的(只要它不不會產生衝突),並且當你合併回feature分支時,Git將會處理它而不會發生衝突。

相關問題