我使用以下命令在文件的上下文中获取上一次提交的密钥到另一次提交:
stderr: 'fatal: ambiguous argument 'path/to/file': unknown revision or path not in the working tree.
但是如果删除了文件,它将返回错误:
git log --max-count=1 --pretty=format:'%H' --all --full-history COMMITKEY~1 -- path/to/file
所以我尝试过这样的事情:
COMMITKEY~2
这实际上返回一个提交密钥,但始终是最新的,而不是前一个。即使我将修订版更改为{{1}}或其他内容,它也会返回相同的提交密钥。
这里有什么问题?
答案 0 :(得分:2)
第二个命令的错误在于--all
参数告诉log
除了你特别提到的任何提交ID之外(即{{1}它应该包括每个已知ref(分支,标记等)的历史。因此,返回的值是它从任何参考 或您指定的提交中找到的第一个提交。
但是我并没有关注你如何得到你在第一个命令中提到的错误。 COMMITKEY~1
消除了论证的歧义(至少,它在我的测试中并根据文档确实)。
答案 1 :(得分:1)
您确定在第一个命令中使用了--
吗?
您的第二个命令不起作用很容易通过--all
的使用来解释,因为--all
等同于手动列出所有引用,因此您当然总是会返回最新的提交。< / p>
实际上,您可以将--max-count=1
缩写为-1
,因此使用git log -1 --pretty='%H' commit-ish~ -- path/to/file
就足够了,也可以使用。
如果你没有使用'fatal: ambiguous argument 'path/to/file': unknown revision or path not in the working tree
告诉git有一个路径跟随,你只得到消息--
,因为那时Git不知道这是否应该是一个无法解析的引用或者历史中可能存在的路径。