如何阻止用户推送所有标签 (git push --tags)?
How do I stop users from pushing all tags (git push --tags)?
在我们发现 git 标签可以用斜线命名以将它们排列在文件夹结构中之前,我们创建了很多标签。现在真的很难摆脱命名错误的标签,因为虽然我在服务器上删除了命名错误的标签,但突然有人没有删除他们的标签在本地推送所有标签,然后旧标签和新标签又在服务器上了。
我们正在使用 SourceTree 作为 git 客户端(是的,我一直在附近确保每个人都取消选中 "push all tags" 复选框,但是新人到达并更换了计算机)和 Visual Studio 团队服务 Git 回购。
我希望每个人都能够单独创建和推送标签,我只是想避免那些批量推送标签。
我读过这个 post git pre-push hook, don't run if is --tags 但解决方案似乎在 Windows 中不起作用。
无论是git钩子还是其他脚本,都需要在本地机器上单独运行。所以我会建议 在开发人员在本地机器上创建自己的标签之前 将标签与远程同步 。
实际上它只需要为每台本地机器执行一次,所以开发人员只需要在工作前在他们的机器上运行以下命令(删除本地标签并从远程获取所有标签):
git tag -l | xargs git tag -d
git fetch --tags
然后开发人员可以处理他们自己的本地存储库,甚至 git push
在 SourceTree 中选择 推送所有标签选项 也不会影响您删除的旧标签。
另外,当server side hooks will available in future for VSTS时,您还可以使用post-push hooks来检查删除的标签是否被再次推送到远程。如果是,请停止推送您在 post-push 钩子中指定的特定标签。
在我们发现 git 标签可以用斜线命名以将它们排列在文件夹结构中之前,我们创建了很多标签。现在真的很难摆脱命名错误的标签,因为虽然我在服务器上删除了命名错误的标签,但突然有人没有删除他们的标签在本地推送所有标签,然后旧标签和新标签又在服务器上了。
我们正在使用 SourceTree 作为 git 客户端(是的,我一直在附近确保每个人都取消选中 "push all tags" 复选框,但是新人到达并更换了计算机)和 Visual Studio 团队服务 Git 回购。
我希望每个人都能够单独创建和推送标签,我只是想避免那些批量推送标签。
我读过这个 post git pre-push hook, don't run if is --tags 但解决方案似乎在 Windows 中不起作用。
无论是git钩子还是其他脚本,都需要在本地机器上单独运行。所以我会建议 在开发人员在本地机器上创建自己的标签之前 将标签与远程同步 。
实际上它只需要为每台本地机器执行一次,所以开发人员只需要在工作前在他们的机器上运行以下命令(删除本地标签并从远程获取所有标签):
git tag -l | xargs git tag -d
git fetch --tags
然后开发人员可以处理他们自己的本地存储库,甚至 git push
在 SourceTree 中选择 推送所有标签选项 也不会影响您删除的旧标签。
另外,当server side hooks will available in future for VSTS时,您还可以使用post-push hooks来检查删除的标签是否被再次推送到远程。如果是,请停止推送您在 post-push 钩子中指定的特定标签。