Git 挂钩以防止实时服务器上的硬重置?

Git hook to prevent hard resets on the live server?

昨天我试图帮助一位同事做一些 Git 的事情,并告诉他做一个 git reset --hard 当我以为他在他的本地 repo 但他在我们的实时服务器上时.这把事情搞砸了,我认为主要是因为在我们的实时服务器上我们有大量本地未提交的文件,这些文件是通过 Drupal 直接上传的,而不是通过提交然后 pushing/pulling in Git。

我想防止这种情况再次发生。是否有我可以编写的 git 挂钩可以防止任何人在实时服务器上执行 git reset --hard

服务器上有很多未提交的文件,这听起来好像您没有将其用作服务器,而是共享的 git 工作区。那就是问题所在。如果您在服务器 'properly' 上托管 git 存储库,那么它将是一个裸存储库(即没有结帐),用户只需 pull/push 即可。

您可以通过 git 挂钩(类似 post-receive 的东西可以工作)来执行到另一个区域的签出,从而获得签出目录的效果。但是您应该将该区域视为只读副本,而不是可写的正在进行的工作。