2011-10-31 136 views
5

我正在開發一個系統,我正在追蹤另一個項目的路徑,將我自己的東西添加到原始項目中,但沒有直接添加。我使用三個遠程分支安裝我的存儲庫:在git中合併遠程分支

  1. 主 - 我的開發發生在哪裏。
  2. 供應商 - 我在哪裏定期與原始項目同步。
  3. 集成 - 我想合併(主)和(供應商)在哪裏。

我的工作流想法是讓自動發生同步(因爲它基本上是一種快速的排序),並且集成是半手動的(因爲它需要合併和修復)。我已經介紹了第一部分(同步),但我無法弄清楚將Master和Vendor集成到集成中實際發佈的命令。

這是的Git分支的輸出-a

* integration 
    master 
    vendor 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/integration 
    remotes/origin/master 
    remotes/origin/vendor 

我怎麼往前走,從這個點:

  1. 同步此工作空間與遠程倉庫?
  2. 將供應商&合併成集成?
  3. 將集成推回到遠程存儲庫?

很明顯,如果我在工作流程中遇到問題,我很樂意聽到它。

+0

集成分支不是必需的,供應商分支已經有供應商和主要的代碼。請注意,每個分支實際上都是一個引用(在C++中的指針),它引用了提交點。在這種情況下,供應商分支已經是您在集成分支中需要的東西 –

+0

在這種情況下,供應商沒有來自主人的代碼。把它看作兩個並行項目,其中A(我的項目)需要B(另一個項目)的更新,但反之亦然。 –

回答

2

雖然integration分支不是絕對必要的(你可以直接vendor融入master,通過對vendor上衍合master),它可以是有用的。

的一個分支B集成分支A可以這樣做:

  • 合併在BA(不過這意味着你在B有任何當前的發展是「保持」等待任何合併衝突的決議,並重新運行所有測試)
  • 重新標記BAgit rebase A)之上,但那會改變B的歷史。

我對Vendor頂部變基integration,解決任何衝突,在那裏,然後在master合併integration,保持master歷史線性的。

+0

我想持續整合供應商和主控制器,但不干擾主控器上的當前進度(上述集成可能很長),這就是爲什麼我需要集成分支。實際上,重新啓動供應商集成是一個好主意。我錯過的是執行合併所需的實際命令,因爲我過去嘗試過的並不真正起作用。 –

+0

@EldadMor'git checkout集成; git rebase Vendor; git checkout master; git merge Integration'應該足夠了。這意味着你不會把'Integration'推到公共回購站,這樣你就可以根據需要隨時重新整合它。 – VonC

+0

我想這就是我的嘗試;我會重試並取回結果。謝謝! –