2013-10-01 107 views
12

有沒有辦法設置一個分支,使其只能合併到一個分支中,而不是推入?此外,有什麼辦法可以在BitBucket,GitLab或GitHub上運行?BitBucket/GitLab/GitHub上的合併分支?

我們在功能分支上工作,將它們推送到BitBucket/GitLab/GitHub(取決於項目),然後將它們合併到名爲'development'的集成分支中。我想阻止人們直接推動「發展」。

BitBucket具有限制訪問分支機構的手段,但它也阻止人們也能夠執行合併請求。

+1

從技術上講,合併只是一個提交與多個父母,你仍然需要推到某個地方,如果你想發佈它。 – poke

回答

13

是:它被稱爲forking(如GitHub forkits tipsBitBucket forkGitLab fork)。

  • 您有一個只有集成商負責的回購(他/她將合併到目的地分行)。
    開發人員無法推送到該回購。

  • 你有「分叉回購」,在那裏你可以引入請求到原來的回購:貢獻者可以他們想要的,然後任何分行(從推分支)拉請求到目的地分支的原始回購。

forking


從理論上講,你可以只用一個upstream repo,但這需要一個authorization layergitolite,以防止推/合併分支。
Github(不保護分支),BitBucket(保護分支,但不保護分支)和GitLab(與BitBucket相同)不可用。

這就是爲什麼它更容易與幾個上游回購:一個原始的,一個或幾個分叉。

並從github /到位桶/ GitLab有大約引入請求一個漂亮的界面,追平那些評論,促進圍繞一個特定拉動請求的交流和討論

的分岔+拉請求不只是「git的方式」,它確實是集成了許多貢獻,which is why git was invented by Linus Torvalds in the first place最方便的方法:幫助他整合補丁很多每天爲他的Linux內核。


「受保護的分支」的方式mentionedTippa Raj(以及我剛纔所說的上面)不是一個方法,我會建議,因爲這將人爲地強制執行集中方法,你需要掌控一切:

  • 樹枝保護
  • 你允許發佈的分支:一個回購協議,開發者會受到誘惑,推動所有及其分支機構。

GitHub不提供受保護的分支機構,因爲這個原因
(實際上,自2015年9月起,它確實:請參閱「How to protect 「master」 in github?」)
BitBucket和GitLab確實提供了該功能。

個人回購也可以管理和保護分支(甚至文件夾和文件),並增加authorization layergitolite

但是,當涉及到促進功能分支周圍的協作時,沒有什麼能夠打敗請求。

+0

謝謝,這是一個非常徹底的答案。我擔心多個上游存儲庫對於手中的案例來說太抽象了 - 可能更容易用頑皮棒擊敗人們,而推動他們不應該去的地方! –

+0

@Deejay不,它不是太抽象,它實際上是一個像* git分佈式VCS應該如何工作的。 – VonC

+1

@Deejay,這是GitHub,BitBicket和GitLab如何解決「相當普遍的需求」。 – VonC

2

除了叉和合並,還有另一種方法。

我不確定Bitbucket和Github,但Gitlab有一個功能可以保護分支。所以除了「主用戶」以外,任何人都不會推動該分支。所以開發人員可以推入功能分支,然後分支可以合併到master分支由「主用戶」

+0

Bitbucket與分支限制有類似的機制:https://blog.bitbucket.org/2013/09/16/take-control-with-branch-restrictions/ –