HEAD和上次提交之间的git diff给出警告:忽略悬空symref

时间:2014-01-19 22:22:22

标签: git git-diff

我在尝试在HEAD和最后一次提交之间做差异时得到了一些奇怪的输出

Fatal: ambiguous argument 'head^': unknown revision or path not in the working tree.
use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

使用git diff <sha> HEAD^时,我收到错误

warning: ignoring dangling symref head. warning: ignoring dangling symref head.
fatal: ambiguous argument 'head^': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

好的,我认为这里有两个可能的原因

1)问题在于,您正在尝试git diff <sha> head^

在这种情况下,您需要将命令更正为git diff <sha> HEAD^。请注意大写字符。请查看此question,详细了解HEAD

2)您正在尝试git diff <sha> HEAD^并仍在收到错误消息。在这种情况下,我认为您的存储库中只有一个提交。虽然sha指向单独提交,但您的HEAD也恰好指向第一次提交,HEAD^碰巧指向之前的提交,这不存在,所以错误。

此处的另一种可能性是上游某人在进行合并时创建了dangling symref(a dangling object)或git resetgit rebase。这应该可以通过git prune删除。