GIT:如何保护分支机构不被其他开发人员删除?

时间:2012-07-09 18:46:18

标签: git github branch git-branch gitlab

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

我尝试在我们的本地gitlab机器中创建一个示例git存储库,然后从网站上的选项中保护其中一个分支,但之后我可以使用git push origin :branch_name将其删除。提前谢谢!

解决方案是否适用于github.com?

5 个答案:

答案 0 :(得分:5)

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

  1. 制作另一个回形针,这是一个沙盒,并且只能访问主要的回形针。如果他们意外删除,他们可以从主回购获得分支。这假设你只使用github作为你的回购放在本地开发回购。
  2. 安装程序中的挂钩,除非您是特定用户,否则不允许删除分支。你不能在github上这样做,因为他们不允许在他们的服务器上执行任意代码。如果您获得本地仓库,则可以执行此操作。
  3. 设置本地gitolite安装以管理具有权限的分支。

答案 1 :(得分:4)

您可以在服务器上使用分支权限,方法是添加一个保护存储库的预接收挂钩,并将这样的内容添加到裸存储库中的配置文件中:

[hooks]
        allowedtomerge = user1,user2,user3
        protectedbranches = master

答案 2 :(得分:3)

OP shershams提及in the comments

以来
  

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

事实证明,GitHub中已经实现了某些功能(很快就会推出):

Protected branches and required status checks(2015年9月3日)将允许您保护分支机构:

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

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

答案 3 :(得分:0)

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

我担心开发人员会意外删除dev或用于部署的其他重要分支,所以我使用了这个hack:

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

只要有一个针对dev的open pull请求,就不能删除dev,VSTS也不会询问我是否要删除该分支。

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

答案 4 :(得分:0)

如果您使用Gitlab,则可以configure protected branches

  

配置受保护的分支

     

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

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

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

  4.         

    [...]