【问题标题】:How can one prevent a git branch from being merged into another?如何防止一个 git 分支被合并到另一个分支中?
【发布时间】:2014-10-28 03:07:13
【问题描述】:

在一个常见的(基于 git 的)开发工作流程中,维护一个 master 分支和一个用于测试目的的 next(或 dev)分支:

  • 功能分支从master开始,合并到next中进行测试。如果认为稳定,功能分支可以合并到master
  • master 定期合并到 next
  • next 会定期重绕(例如,在发布后)。
  • 永远不要将next 分支合并到master 分支中

如果能够自动阻止next 合并到master,无论是直接还是通过基于next 的另一个分支,这将非常有用。 如何使用 git 来完成这项工作?

注意:如this question 中所述,可以使用 git 挂钩来防止在具有完全访问权限的远程存储库上进行这些类型的合并。但是,这(大概)对于 BitBucket 或 GitHub 之类的服务是不可能的,因此我寻求一种适用于本地存储库的解决方案,或者一种可以与只有有限管理访问权限的远程存储库一起使用的解决方案。

【问题讨论】:

  • 为什么不在本地安装钩子呢?
  • 链接中的钩子是一个更新钩子,它只对远程存储库有意义。也许这很简单,但如何将其转化为本地挂钩?
  • 这似乎是一个很棒的问题,也是我需要回答的问题。它没有更多的关注和基于钩子的答案,这非常令人不安,因为这对于安全使用此工作流程似乎至关重要。我想这样做已经花费了我的团队大量的时间和烦恼,完全按照 OP 描述的方式(使用“通过另一个分支”变体)。

标签: git version-control workflow bitbucket githooks


【解决方案1】:

当您真的想使用 Github/Bitbucket 时,请不要授予任何人对您的存储库的写入权限。只接受拉取请求。这样,您可以检查它包含的合并请求,并在您看到不想要的内容时拒绝它们。

一种自动化的方法是创建一个本地存储库,添加一个执行检查的钩子,然后将拉取请求拉入新的本地“验证”存储库(这不应该是您的正常工作存储库,因此您可以总是扔掉)。

【讨论】:

    猜你喜欢
    • 2016-07-26
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    相关资源
    最近更新 更多