2011-03-13 94 views
21

我有兩個名爲「develop」和「master」的本地存儲庫;他們是相似的。在我公司的服務器有1其他開發人員所做的「主」回購(生產)及幾個分公司:用git合併多個分支

 
$ git branch -a 
* develop 
    master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/some-test 
    remotes/origin/feature1 
    remotes/origin/feature2 
    remotes/origin/master 

如何合併remotes/origin/feature1remotes/origin/feature2到我的本地「大師」回購,複製,所有進入「開發「並開始使用我的」開發「回購中的實際代碼?

回答

31
  1. git checkout master
  2. git pull origin feature1 feature2
  3. git checkout develop
  4. git pull . master(或者git rebase ./master

的第一個命令改變了你當前分支到master

第二個命令從遠程feature1feature2分支變化拉動。這是一個「章魚」合併,因爲它合併了兩個以上的分支。如果您願意,您也可以進行兩次正常合併。

第三個命令交換機你回到你develop分支。

第四個命令拉動變化從本地masterdevelop

希望有所幫助。

編輯:請注意,git pull將自動執行fetch,所以你不需要手動。這幾乎等於git fetch,然後是git merge

+1

這種方法和僅使用兩個合併之間的區別是什麼?你有沒有得到一個與所有三個分支作爲父母合併提交?另外,如果合併不乾淨,這可能會失敗,對吧?因此,'git merge feature1 feature2'可能是必需的。 – naught101 2013-03-13 05:35:20

+0

爲了回答我自己的問題,您確實獲得了每個分支的頭部作爲父級(包括被合併到的分支)的單個提交。如果一個或多個單獨合併是快速合併,那麼您不會將合併的分支的頭部作爲父項合併,因爲它已經在其中一個分支的歷史中。 – naught101 2013-03-13 05:52:59

+13

如果發生衝突,合併將會失敗,並顯示消息「不應該做八達通」。這顯然是有史以來最好的錯誤消息之一。 – naught101 2013-03-13 05:58:40

9

我也只是「取」的所有來源:

git fetch origin 

現在,它是在你的回購可以將分支合併到主:

git checkout master 

git merge origin/feature1 

git merge origin/feature2 

現在你可以合併掌握到發展

git checkout develop 
git merge master 

如果您要提交回原點,那麼我會設置一個本地跟蹤分支所以你可以有本地訪問,並直接推到原點:

git branch --track origin/feature1 feature1