如何阻止用户推送所有标签(git push -tags)?

时间:2017-08-14 18:49:00

标签: git azure-devops atlassian-sourcetree

我们在发现git标签可以使用斜杠命名之前创建了很多标签,以便将它们排列在文件夹结构中。现在很难摆脱错误名称的标签,因为虽然我删除了服务器上的错误名称标签,但突然有人没有在本地删除其标签推送所有标签,然后新旧标签再次出现在服务器上。

我们正在使用SourceTree作为git客户端(是的,我已经出现并确保每个人都取消选中“推送所有标签”复选框,但新人到达并更换计算机)和Visual Studio Team Services Git回购。

我希望每个人都能够单独创建和推送标签,我只想避免那些批量推送标签。

我已阅读此帖git pre-push hook, don't run if is --tags,但该解决方案似乎无法在Windows中使用。

1 个答案:

答案 0 :(得分:2)

无论是git hook还是其他脚本,所有这些脚本都需要单独在本地计算机上运行。因此,在开发人员在本地计算机上创建自己的标记之前,我建议与远程同步标记

实际上它只需要为每台本地机器执行一次,因此开发人员只需在工作之前在其机器上运行以下命令(删除本地标签并从远程获取所有标签):

git tag -l | xargs git tag -d
git fetch --tags

然后开发人员可以使用他们自己的本地仓库,甚至git push在SourceTree中选择推送所有标记选项也不会影响您删除的旧标记。

另外,当server side hooks will available in future for VSTS时,您还可以使用推后挂钩来检查已删除的标签是否再次被推送到远程。如果是,请停止推送您在推后挂钩中指定的某些标签。