如何防止在纯GIT中删除远程分支

时间:2018-01-22 12:45:16

标签: git hook atlassian-sourcetree git-extensions

问题出在 PURE GIT ,而不是GitHub,GitBucket,GitLab等。

有没有办法使用钩子或其他任何东西,我可以捕获有人试图删除远程分支的命令?

类似于命令" push --delete origin branchName"

预推或更新挂钩,不知道"删除"被执行。

非常奇怪,偶然或不理解某人可以非常简单地删除像#" master"这样的主要分支。它是正确的,一切都可以恢复,但为什么所有的麻烦?我无法将其标记为受保护或至少是某些钩子,我可以检查它是否正在完成?

我们只使用GIT与GitExtentions,只需简单的http,我们就不会切换到其他工具。

谢谢, 利。

1 个答案:

答案 0 :(得分:4)

配置receive.denyDeletes可用于此:

$ git config receive.denyDeletes true

请参阅this reference at the very bottom

  

这会拒绝任何分支或标签的删除 - 用户无法做到这一点。要删除远程分支,必须手动从服务器中删除ref文件。

或者来自git config reference

  

如果设置为true,git-receive-pack将拒绝删除ref的ref更新。使用它来防止通过推送删除这样的引用。

这将在裸存储库上设置,或者对于在该系统上处理的所有存储库全局--system