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

Ely*_*ahu 3 git hook git-extensions atlassian-sourcetree

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

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

类似于命令“push --delete origin branchName”

预推送或更新挂钩,不知道是否执行了“删除”。

很奇怪,不小心或不理解某人可以非常简单地删除甚至像“master”这样的主要分支。一切都可以恢复是正确的,但为什么要这么麻烦?我没办法将它标记为受保护的,或者至少是一些我可以检查它是否正在完成的钩子?

我们只使用 Git 和 GitExtentions,使用简单的 http,我们不会切换到其他工具。

谢谢,伊莱。

mml*_*mlr 6

该配置receive.denyDeletes可用于:

$ git config receive.denyDeletes true
Run Code Online (Sandbox Code Playgroud)

请参阅最底部的此参考

这拒绝删除任何分支或标签——没有用户可以这样做。要删除远程分支,您必须手动从服务器中删除 ref 文件。

或者从git 配置参考

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

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