回答
如果您有共享的中央回购站,您可以在此中央回购站上设置一个pre-receive
挂钩,以拒绝任何将修改现有标签的推送。
如果您使用某个活动的git服务器(例如:gitolite
),则可以在每个用户具有的访问权限中强制执行这种类型的规则。
您可以对标签进行签名。
见签署标签的文档: Git Tools - Signing Your Work
似乎仍然可以删除已签名标记,对不对?为什么我仍然可以删除特定标签 – ElvisHuang
如果是这样,您还应该添加预接收钩子以防止删除或移动现有标签。我仍然建议使用签名标签 – yorammi
在一个(本地)仓库,没有什么保护,以防止删除。你几乎可以删除任何东西:分支,提交和标签。您甚至可以通过简单地删除文件夹来删除整个存储库。 Git中没有任何东西可以甚至试图阻止这种情况。毕竟,它是你的存储库,所以你可以做任何你想要的。
将远程存储库添加到该等式后会有点不同。同样,本地存储库不能阻止您删除远程存储库上的内容(并且您不希望本地负责保护远程设备)。所以Git允许你推送任何东西,即使这意味着远程存储库确实会丢失一些信息(通过主动删除东西或用其他东西覆盖它)。
远程存储库本身也没有保护。 Git本身在其远程存储库交互协议中没有任何访问管理。所以你需要的是第三方负责这个东西。对于自主托管的存储库,Gitolite几乎是的解决方案。它支持非常精细的权限模型,并且几乎可以为每个用例添加规则和例外。特别是,它允许您保护分支和标签免受(有害)修改。
如果您不是自己托管的,那么您需要寻找提供商的保护选项。例如,GitHub支持受保护的分支机构,它允许您防止对这些分支的强制推送。不幸的是,它没有标签功能,所以你仍然可以强制推送标签。 BitBucket为分支权限提供了更灵活的功能,这也允许模式。您可以使用该模式来指定标签,但我确实不太确定。
一般来说,你不能真正保护你的版本库,以免被删除标签。如果有任何帮助,如果您发现标签被更改或删除,您可以随时强制将您的本地标签重新插入,以将状态重置为原来的状态。
- 1. Git:如何让现有的git轻量级标签指向另一个提交?
- 2. 如何在git中注释现有标签
- 3. 如何列出所有Git标签?
- 4. 如何确定我在git中签出的分支/标签?
- 5. ,如何在现有的标签中添加标签?
- 6. 如何实现锁定?
- 7. 标签一个git用“标签”标签
- 8. 如何删除特定标签后的所有标签?
- 9. 最新的git标签不使用git出现描述命令
- 10. 确定最新收到的git标签
- 11. 在NFC标签内锁定段
- 12. 屏幕锁定时检测NFC标签
- 13. 如何下载特定的git存储库标签?
- 14. 如何从git获取指定标签版本的Chromium代码?
- 15. Git:我如何找到指向特定修订版的标签?
- 16. git:有没有像每分支标签?
- 17. 检出所有的git标签
- 18. 是否有可能git grep的标签?
- 19. 如何获取仓库所有克隆上的git标签?
- 20. 如何在GIT中使用标签
- 21. Git vs SVN如何区分标签
- 22. 如何通过git标签循环
- 23. 如何从git标签中读取标签信息?
- 24. 锁定的pom.xml在eclipse中导致git分支签出失败
- 25. 是否有针对ruby的'标准'读/写锁定实现?
- 26. 如何呈现不同xAxis标签的自定义标签颜色?
- 27. 标签git版本从构建 - 标签没有在git中找到
- 28. git只拉一个特定标签
- 29. git:仅推送特定标签
- 30. 如何在配置SCM Maven插件时指定git标签?
您可能可以通过钩子q.v.强制执行此操作。 [这里](http://stackoverflow.com/questions/6390966/disable-tag-deletion)。 –
标签可以像分支,提交一样被删除,实际上任何东西都可以被删除。如果您想避免这种情况,请设置服务器拒绝这些更改(类似地,您将如何设置为拒绝强制推送)。 – poke
[禁用标记删除]的可能重复(http://stackoverflow.com/questions/6390966/disable-tag-deletion) –