Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止在纯GIT中删除远程分支_Git_Hook_Atlassian Sourcetree_Git Extensions - Fatal编程技术网

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

如何防止在纯GIT中删除远程分支,git,hook,atlassian-sourcetree,git-extensions,Git,Hook,Atlassian Sourcetree,Git Extensions,问题出在纯GIT上,而不是GitHub、GitBucket、GitLab等等 有没有一种方法可以通过钩子或其他方式捕捉到有人试图删除远程分支的命令 类似于命令“push--delete origin branchName” 预推或更新挂钩,不知道是否执行了“删除” 非常奇怪的是,不经意间或不理解某人就可以非常简单地删除像“master”这样的主要分支。一切都可以恢复是正确的,但为什么要这么麻烦呢?我不可能把它标记为受保护的,或者至少有一个钩子,我可以检查它是否被保护 我们只使用GIT和GitEx

问题出在纯GIT上,而不是GitHub、GitBucket、GitLab等等

有没有一种方法可以通过钩子或其他方式捕捉到有人试图删除远程分支的命令

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

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

非常奇怪的是,不经意间或不理解某人就可以非常简单地删除像“master”这样的主要分支。一切都可以恢复是正确的,但为什么要这么麻烦呢?我不可能把它标记为受保护的,或者至少有一个钩子,我可以检查它是否被保护

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

谢谢,
Eli.

配置
接收.denyDeletes
可用于:

$ git config receive.denyDeletes true
见:

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

或从:

如果设置为true,git receive pack将拒绝删除ref的ref更新。使用此选项可防止通过推送删除ref


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

正如您提到的远程分支,您确实使用了一些远程访问。值得指定您使用的协议。mmlr的答案应该适用于大多数人谢谢。正是我需要的!