14

在我们的产品首次发布后,我们将切换到不同的分支进行主要开发和功能开发。有没有办法以这种方式创建分支,以便我们可以保护它不被删除(意外或故意),除非您是特定用户(基于角色或用户名)?

我试图在我们的本地 gitlab 机器上创建一个示例 git 存储库,然后保护其中一个分支免受网站上的选项的影响,但后来我能够使用git push origin :branch_name. 提前致谢!

该解决方案可以在 github.com 上运行吗?

4

5 回答 5

8

有很多方法可以解决这个问题:

  1. 制作另一个沙盒存储库,并授予对主存储库的只读访问权限。如果他们意外删除,他们可以从主仓库获取分支。这假设您仅将 github 用于您的存储库,而不是本地开发存储库。
  2. 在存储库中设置挂钩,除非您是特定用户,否则不允许删除分支。你不能在 github 上这样做,因为他们不允许在他们的服务器上执行任意代码。如果你得到一个本地仓库,你可以这样做。
  3. 设置本地 gitolite 安装以管理具有权限的分支。
于 2012-07-09T18:57:40.277 回答
4

你可以在服务器上使用分支权限,方法是添加一个 pre-receive 挂钩来保护你的存储库,并将类似这样的内容添加到裸存储库中的配置文件中:

[hooks]
        allowedtomerge = user1,user2,user3
        protectedbranches = master
于 2012-11-09T02:44:45.650 回答
3

由于评论中提到的OP sheshams

我们计划切换到 github,我想知道他们是否为此目的实现了一些东西

事实证明,在 GitHub 中实现了一些东西(并且很快就会提供):

受保护的分支和所需的状态检查(2015 年 9 月 3 日)将允许您保护分支:

  • 反对强推
  • 反对删除
  • 反对合并的更改,直到所需的状态检查通过

https://cloud.githubusercontent.com/assets/25792/9596474/27db3ce6-502a-11e5-9b19-5b47a8addc65.png

请注意,自 2019 年 12 月 4日起,您可以通过启用Allow deletions.

于 2015-09-03T19:36:31.193 回答
1

我有一个 git 分支模型,它具有用于分阶段部署的 dev/master/production 分支,因此我希望保护某些分支不被删除。我使用拉取请求和 Visual Studio 团队服务,因此例如在从 dev 到 master 的每个拉取请求之后,VSTS 会询问我是否要删除源分支 (dev)。

我担心开发人员不小心删除了 dev 或另一个用于部署的重要分支,所以我使用了这个 hack:

我创建了一个名为“save”的 dev 分支,进行了一行更改,打开了一个针对 dev 的拉取请求,然后将其保持打开状态。

只要有针对 dev 的公开拉取请求,就无法删除 dev,VSTS 也不会询问我是否要删除分支。

如果这个问题还有其他更官方的解决方案,我很乐意使用它。但就目前而言,这很容易并且有效。

于 2017-06-02T17:01:41.533 回答
0

如果您使用的是Gitlab,那么您可以配置受保护的分支

配置受保护的分支

要保护分支,您至少需要拥有 Master 权限级别。请注意,master 分支默认受保护。

  1. 导航到项目的设置➔存储库

  2. 滚动找到受保护的分支部分。

[...]

于 2017-08-09T13:40:03.930 回答