以前提交另一个删除/移动/重命名的文件



我正在使用以下命令在文件的情况下获取上一个提交的键:

git log --max-count=1 --pretty=format:'%H' COMMITKEY~1 -- path/to/file

但是,在删除文件的情况下,它将返回错误: 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或其他内容,它也会返回同一提交密钥。

这里怎么了?

第二个命令出了什么问题是 --all参数告诉 log,除了您专门调用的任何提交ID(即COMMITKEY~1或其他任何提交ID(之外,它还应包括历史每个已知的Ref(分支,标签等(中的。因此,返回的值是从任何Ref 中找到的第一个提交。

,但我不关注您如何获得提到的错误,无论如何都要形成第一命令。--删除了该参数(至少在我的测试中和根据文档中确实如此(。

您确定与第一个命令一起使用--吗?

您对--all的使用很容易解释您的第二个命令,因为--all等于手动列出所有参考资料,因此您当然会始终返回最新的提交。

实际上,您可以缩写--max-count=1-1,因此使用git log -1 --pretty='%H' commit-ish~ -- path/to/file就足够了,也可以正常工作。

如果您不使用--告诉GIT有一条路径,则仅收到消息'fatal: ambiguous argument 'path/to/file': unknown revision or path not in the working tree历史。

最新更新