2016-11-30 79 views
0

使用Git子樹合併,可以同時使用一個Git命令將回購B的所有分支合併到回購A中嗎?回購B有近15個不同的分支機構,我試圖通過一次完成回購和所有分支的子合併來節省時間。我還沒有找到任何方法來做到這一點在線..這是不可能的?Git子樹合併 - 將子樹回購中的所有分支合併到同一時間的父回購

如果沒有可能,沒有任何人知道最有效的方式給每個分支合併單獨爲母公司回購A.回購B相是這樣的:

Repo B/masterbranch 
Repo B/developbranch 
Repo B/featurebranch 

我需要回購A(父)看東西像這樣:

Repo A 
    component -> folder of some sort that holds the different branches 
    masterbranch 
    developbranch 
    featurebranch 

我知道我能堅持歷史與子樹合併,所以我想我需要做的事情在這方面。但似乎只可能做一個分支,在一個時間導致文件衝突在我.bowerrc

我在一次做一個文件的初步嘗試已經從以下這一點:

How do you merge two Git repositories?

+0

您是說,對於最終產品,您希望「回購A」擁有一個「組件」目錄「Repo B」每個分支的獨立*子目錄? –

+0

只需一個「組件」目錄,並在目錄中選擇一個特定的分支並查看其歷史記錄。 – bschmitty

回答

1

是的,你可以通過兩種方式做到這一點 - 子模塊和遠程添加(無子樹):

通過子模塊:

  1. 在回購A中,將回購B添加爲子模塊,請使用git submodule add <URL for Repo B> component
  2. 在組件(cd component)的子文件夾中,您會找到回購B的所有分支(git branch -a)。您現在可以切換到回購A的不同分支。
  3. 如果您想要在回購A中提交的回購B的更改,您需要返回到回購A目錄(cd ..),然後使用git commitgit push來回購A.如果您想要在回購B本身提交的回購B更改,您可以在組件子文件夾(cd component)中,然後使用git commitgit push

通過添加遠程:

  1. 添加在本地回購回購B遙控,使用由git pull origin1
  2. git remote add origin1 <URL for Repo B>
  3. 拉回購但這也許有點不同,從您的要求,所有的Repo A和Repo B的分支在同一目錄中,它顯示爲(git branch -a):

remotes/origin/<all Repo A branches> remotes/origin1/<all Repo B branches>

注:你可以切換到任何分支。如果回購A和回購B都有分支機構,則需要添加遠程名稱,例如git checkout origin/mastergit checkout origin1/master

+0

我按照上述步驟使用了submodules方法...它將Repo B添加爲子模塊,但它創建的目錄是「component @ 65c69279bb2」,並且它還創建了「.gitmodules」文件夾。我可以繼續將該文件夾重命名爲「組件」嗎?這有什麼影響嗎?另外,我可以刪除.gitmodules文件夾還是需要在那裏? – bschmitty

+0

在上面的評論中,我將repo B的更改提交到Repo A中。這是我需要的,我只是不希望組件文件夾被命名,因爲它在上面..如果gitmodule文件必須在那裏,我可以住在那..感謝 – bschmitty

+0

它看起來像我必須做的遠程選項。我看到所有的分支機構都坐落在Repo A/component /裏面,這個選項......推動的方式與上面鏈接中的步驟相同(即read-tree --prefix = ...) – bschmitty

相關問題