如何防止将已删除的标签再次推送到远程git repo?

时间:2019-04-12 09:08:41

标签: git

我正试图防止同事再次推送已删除的git标签(因为它被错误地推送了一次)。

我知道如何在本地进行操作以及如何将其推送到远程,以及如何指示我的同事以正确的方式从本地存储库中删除已删除的标签。

问题是,只需要1位同事就可以进行推送而无需先修剪,然后再删除已删除的标签,很快所有同事都将旧标签退回了。

协调和确保每个人都在正确的时刻修剪一下是一场噩梦。

我怀疑我必须求助于钩子。关于如何以自动化方式解决此问题的任何建议,不需要每个人都在正确的时间进行修剪操作?

有人提出this问题可以解决,但该问题仅讨论如何删除远程标签。我对git hooks不够熟悉,无法解决此问题,因此不胜感激如何使用git hooks解决该问题的指针。

1 个答案:

答案 0 :(得分:1)

实际上,您可以使用钩子解决此问题,无论是客户端(因为您控制同事的机器)还是服务器端(最佳方法)。其他答案可能会帮助您。

但是,避免出现这种情况的一句话是:处理此问题的正确方法是 not ,首先要向公司中的每个人授予推送权限。即使您希望有一个每个人都可以使用的集中式存储库(一个坏主意),当然也不是每个人都应该能够创建生产 tags (一个 非常 坏主意)。那只是导致这种问题的反模式。

相反,最好的方法是让一个或几个开发人员/经理来审核和接受更改(通常称为拉取请求)。这样,您可以确保不能简单地犯错误,并且至少要进行一定程度的检查。此外,您还可以让漫游器来审查对此类请求的请求。在草稿阶段而不是在最终合并中。为了管理PR,可以使用某些著名的软件/平台,也可以使用基于电子邮件的方法,例如Linux内核。

最后一点:如果标签已创建,并且这是一个公共存储库(或其他人可以访问的存储库,例如您的客户),则实际上不应该删除它。与不删除已公开发布的历史记录的原理相同。最好淘汰旧标签,然后创建一个新标签来取代它,这是最好的方法。