2014-01-29 51 views
3

我們已經拉來自其他分支的請求以及我們自己的分支中必須去多個分支的分支。有沒有一種方法可以在一個步驟中將拉請求合併到多個分支?將拉取請求合併到多個分支中

+0

你能提供更多關於分支機構相關的信息嗎?簡短的答案是「否」,但取決於分支機構的相關方式,可能有辦法處理事情,以保證在第一次合併之後不會發生衝突。 – asm

回答

3

不,你不能不幸的是:http://git-scm.com/docs/git-merge

當我有這種要求(這是不是經常),我通常做手工在控制檯中。如果這對你的工作流程造成很大的負擔,我會建議一個shell腳本,它可以首先完成所有合併而不發生衝突,然後讓你手動修復其他的腳本。

這是一個需求,因爲你有太多的併發開發線在同一時間?

-1

不可能一步到位,而是一個解決辦法:

我會假設你拉的請求是基於關閉的分支(和所有要合併的PR到其他部門)是反對主人。如果沒有,那麼有變基所有的人:

$ git rebase origin/master 

我們現在要做的是把你拉請求的差異,藏匿,然後藏匿應用到多個分支。爲了更容易,我建議首先使用squashing your commits。一旦你擠壓它們,我們將撤銷你的最後一次提交(由於我們使用soft標誌,所做的更改將保持不變,但我們希望保留存儲器中的更改)。

$ git reset --soft HEAD^ 

現在我們希望它們應用到這個分支:

$ git stash apply 

請注意,我用apply,而不是pop,這保證了更改不會下降。切換到其他分支,並將這些存儲應用於這些分支並提交更改。注意:當你提交時,你將有不同的提交SHA(因爲這些都是應用於不同分支的所有不同更改)。這意味着如果這些分支機構合併,你將會發生衝突,但希望這很容易,因爲變化應該是相同的。話雖如此,我絕對不建議這條路線。這是我的建議。

您應該將該更改合併到主分支並重新綁定其他分支。如果你這樣做,生活就會變得如此簡單。

+1

我可能會錯過一些東西,但是這種技術在合併時會不會有效地摧毀分支的歷史? – mipadi

+0

有兩種方法。第一個將摧毀一個分支的歷史,這是我不推薦它的原因之一。第二種方法不會:將變更合併到主分支中,所有其他分支都可以變更分支將保留分支機構的歷史記錄。 – seato

+0

我不得不同意@mipadi - 開頭的'git rebase origin/master'實際上會毀掉這兩個分支,並且沒有很好的理由,因爲它們可能與每個其他分支有關,但不會與'origin/master '。 – Gonen