我们的团队目前遇到了一些问题,开发人员意外地回滚了某些文件的历史记录。具体来说,有人遇到合并冲突并点击了tortoisegit中的revert并回滚了一堆文件。
我们已经有一些git pre push hooks,所以想检查是否有任何方法我们可以检查历史记录是否正在回滚,从而阻止推送
这里有两个最近的场景,我可以举例说明
开发人员对50个文件进行了合并冲突。他点击了龟龟git中的revert,它将50个文件回滚到了早期版本。然而,这只是那50个文件的回滚。其他文件没有受到影响。
开发人员正在将一个主分支合并到他的分支中。当出现合并冲突时,他只选择了一个选项,即他的文件将始终优先于master中的文件,大约100个文件。结果他回滚了100个文件的历史
此外,我们的团队中有多个回购,所有这些回购共享预推钩。将它作为预推钩实现比在所有repos的裸目录中添加此选项要花费更少的时间
答案 0 :(得分:2)
在git
,"还原"和"重置"是两个单独的操作,只有git reset
实际回滚历史记录。
如果有人使用git reset
回滚其本地存储库的历史记录,则在远程存储库的配置中设置以下参数将阻止他们推送其更改:
receive.denyNonFastForwards = true
receive.denyDeletes = true
如果有人实际运行git revert
,则您无法真正防范:revert
操作会生成新提交,以反转之前所做的更改承诺。这是开发的正常部分,从git的角度来看,与手动进行相同更改并提交它们的人无法区分。
This question建议如果要在本地存储库中进行检查,如何以可pre-push
挂钩修改的方式检测强制更新。