2015-02-04 100 views
0

我們正在開發一個開源項目,並且通常會有一些活動的Pull請求。保留一個git分支來處理幾個緊密相關的Pull請求?

它直接創建每拉入請求一個分支:

  • 主:「乾淨」的上游複製品。這從來沒有任何我們的自定義回購更改。它是定期從上游rebase'd,不包含任何我們
  • 特徵1的提交:只把與拉請求特徵1這裏
  • 特點2相關的提交:只放與拉請求特點2這裏 相關的提交。 。
  • featureN:只把與拉請求featureN這裏

相關的提交,但我想知道如果別人你在那裏已經成功管理多個功能/ PR在一個分支 - 以及如何你配置相同。

  • 主: 「乾淨的」 上游
  • featureset1的翻版:放了幾個不同密切相關的功能/ PR的位置
  • featureset2:把另一組密切相關的功能在這裏

回答

1

是,我做了很多,我致電集成分支機構。根據pull請求合併到的分支創建分支(通常爲master),然後按照您希望的順序合併每個pull請求分支。

這是一個扔掉的分支,因爲如果它的存在與否最終並不重要,因爲當pull請求被合併時,相同的提交會被放入master,最後你可以刪除集成分支。

$ git checkout master 
$ git pull 
$ git checkout -b int/all-the-pull-requests 
$ git merge user1/feature-1 
$ git merge user2/feature-2 
$ git merge user3/feature-3 

如果你想添加更多的從您可以再次分支和拉請求被合併到主後,再rebase --onto移動提交給基於關老爺的。

$ git checkout -b feature/after-integrations 
$ git add .; git commit 
... 
$ git checkout master 
$ git pull # pull requests were merged! 
$ git checkout feature/after-integrations 
$ git rebase --onto master int/all-the-pull-requests feature/after-integrations 
$ git branch -D int/all-the-pull-requests # No longer needed 

在創建集成分支後,處理個別拉取請求上的更改。

$ git checkout user2/feature2 
$ git pull 
$ git checkout int/all-the-pull-requests 
$ git merge user2/feature2 

如果你有

A--B--C (master) 
    \ \ 
    \ D--F (feature1) 
     \ 
     G--H (feature2) 

將成爲

A--B--C (master) I------------J (int/all-the-pull-requests) 
    \ \  /  /
    \ D------F (feature1)/
     \     /
     G------------------H (feature2) 

和更新,以特點2:

A--B--C (master) I------------J--L (int/all-the-pull-requests) 
    \ \  /  // 
    \ D------F (feature1)// 
     \     // 
     G------------------H--K (feature2) 

合併

A--B--C------M------------N (master) 
    \ \ /  /
    \ D--F (feature1)/
     \  \  /
     \  I--J--L/(int/all-the-pull-requests) 
     \ ///
     G----H--K--/ (feature2) 

和刪除

A--B--C------M--N (master) 
    \ \ // 
    \ D--F/(feature1) 
     G--H---K (feature2) 
+0

嗨Sukima,請在這裏澄清你的具體工作流程。我們同時影響多個PR。讓我們假設每個PR中的文件都是互斥的。你如何處理單個PR相關文件的推送?你櫻桃採摘?這是如何爲你制定的? – javadba

+0

爲pull request分支做一個'git pull'然後再合併。合併只會更新自上次合併以來的更改。如果它變得混亂,我刪除集成分支並重新執行。 – Sukima

+0

嗨,我upvoted,因爲這是有幫助的。但我不明白一些細節:也許還有一些評論。你似乎有一堆不同的功能分支:「userN/feature-N」,以及int/all-the-pull-requests。我的關係並不清楚。 – javadba

相關問題