Git检出错误:“致命错误:引用不是树”

8

一切始于我决定搞清楚我正在工作的项目为什么这么重。我运行了以下脚本:

git rev-list --objects --all \
| git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' \
| sed -n 's/^blob //p' \
| sort --numeric-sort --key=2 \
| cut -c 1-12,41- \
| $(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest

我已经找出了哪些提交包含最大的文件。接下来,我想知道这些提交的作者是谁,并尝试运行类似以下命令:

git show --stat COMMIT_HASH

我得到了一堆无法理解的东西,当我尝试回滚到提交时,出现了上述错误。

所以我的问题是:我如何找到提交的作者?

2个回答

11
在我的情况下,在检出特定版本之前运行“ git fetch ”,这样就可以工作了。

5
你的 git show 命令应该可以正常工作。要么哈希值无效,要么提交对象以某种方式已经损坏。
更新: 你的脚本返回对象哈希值,所以可能该对象的引用无效。
无论如何,你都无法从那里获取作者引用。
这可能会有所帮助,它将列出修改了提供的哈希值的对象的所有提交: git log --find-object=OBJECT_HASH

我获取了与最大文件对应的提交哈希,该哈希由Bash脚本生成。但在这种情况下,是否有简单的方法删除该对象? - Albert
但在执行此操作之前,我实际上想找出提交的作者。 - Albert
我必须更新我的答案。我运行了您的命令并注意到它返回的是对象哈希,而不是提交哈希。 - Nick Toumpelis
我添加了一个可能有用的提示。 - Nick Toumpelis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接