2013-10-01 113 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/ –