看看谁删除了git标签

Ion*_*zău 16 git git-tag

是否有可能找到谁从存储库中删除了git标签?

假设您有一个包含贡献者的存储库.该仓库有dev标签和版本:v0.1.0,v0.1.1等等.

有人删除了一个标签.你怎么会找到删除了git标签?

Gab*_*vay 6

您有两种类型的标签:

  • 轻量级
  • 注释

轻量级标记只是提交的元数据.他们自己没有作者.说标签的作者是提交的作者是错误的,因为其他任何人都可以用轻量级标签标记该提交.

另一方面,带注释的标签就像提交一样.这就是为什么带注释的标签在创建它们时也需要一条消息.他们有作者,描述等.

因此,要了解标记的作者,您必须具有带注释的标记策略.但是,据我所知,没有git repo元数据(.git目录)的历史.这意味着您无法知道谁删除了标记/分支/ etc,除非您的git提供程序具有审计/ log/this的机制.


Fro*_*ost 5

按照这个关于恢复已删除标签的 git提示,您可以执行以下操作:

找到所有无法访问的标签git fsck:

git fsck --unreachable | grep tag
Run Code Online (Sandbox Code Playgroud)

然后,对于输出中的每个提交哈希,运行

git show COMMIT_HASH
Run Code Online (Sandbox Code Playgroud)

如果您想要一个shell脚本来列出所有无法访问(已删除)的标签以及相关人员(Tagger),您可以运行以下命令:

for commit in `git fsck --unreachable | grep tag | awk '{ print $3 }'`; do 
   git show $commit | grep -E "^(tag|Tagger)"; 
done
Run Code Online (Sandbox Code Playgroud)

编辑:这不回答问题的实际问题,但它告诉你如何查看索引中所有无法访问的标记的作者.

  • 这将查找所有无法访问的标记对象,但不会为所有标记创建标记对象.此外,这显示了谁创建了标记,但问题是要查找谁删除了标记. (3认同)