我们最近有一个实习生“git reset --hard”并意外撤消了我们主要的GIT回购的大量工作。我们正在恢复工作,但我想确保这样的事情再也不会发生。
我知道有很多关于此的问题,但它们似乎都是关于恢复而不是预防。有什么方法可以阻止推送到我们的主仓库改变或删除已被推送的提交?是否有配置设置或推送挂钩可以完成这项工作?
答案 0 :(得分:7)
您可以在中央(裸)回购中设置2 configuration options来帮助防止此问题:
receive.denyNonFastForwards
receive.denyDeletes
第一个选项要求所有推送仅添加历史记录。 git reset
后跟git push
将被拒绝。
第二个关闭一个循环漏洞,有人可以使用git push <origin> :<branch-to-delete>
删除远程分支,然后使用正常的git push
以及他们想要的任何更改再次推送。