如何防止已删除的标签再次推送到远程 git 存储库?

Nic*_*sen 6 git

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

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

问题是,只需要 1 个同事在没有首先修剪的情况下进行推送,然后删除的标签就回来了,很快所有同事都恢复了旧标签。

协调并确保每个人在正确的时间进行修剪是一场噩梦。

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

有人建议这个问题有一个解决方案,但该问题仅讨论如何删除远程标签。我对 git hooks 不太熟悉,无法解决这个问题,因此非常感谢有关如何使用 git hooks 解决它的指针。

Aco*_*orn 1

事实上,您可以使用钩子来解决它,无论是在客户端(因为您控制同事的机器),还是在服务器端(最好的方法)。其他答案可能会对您有所帮助。

但是,要避免这种情况:处理此问题的正确方法不是一开始就向公司中的每个人授予推送权限。即使您希望拥有一个每个人都可以工作的集中存储库(一个坏主意),当然不是每个人都应该能够创建生产标签(一个非常坏的主意)。这只是一种导致此类问题的反模式。

相反,最好的方法是让一名或少数开发人员/经理审查并接受更改(通常称为拉取请求)。这样,您就可以确保错误不会简单地发生,并且至少会进行一定程度的审查。此外,您也可以让机器人审查此类内容的拉取请求;在草案阶段而不是在最终合并阶段。为了管理 PR,可以使用一些众所周知的软件/平台,也可以使用基于电子邮件的方法(如 Linux 内核)。

最后,另一点:如果标签已创建,并且这是一个公共存储库(或其他人可以访问的存储库,例如您的客户),那么您确实不应该删除它。与不删除已经公开推送的历史的原则相同。弃用旧标签并创建一个新标签来取代它是最好的方法。

  • 我强烈不同意你不给予许可的做法。这可能适用于某些公司和文化,但不适用于我所生活的世界。这也是一个完全不同的讨论。 (3认同)