Git 已删除/移动/重命名文件的上一次提交

Git 已删除/移动/重命名文件的上一次提交,git,Git,我使用以下命令在文件上下文中获取上一次提交到另一次提交的密钥: git log --max-count=1 --pretty=format:'%H' COMMITKEY~1 -- path/to/file 但如果文件被删除,它将返回一个错误: stderr:'fatal:不明确的参数'path/to/file':未知修订或路径不在工作树中。 所以我试过这样的方法: git log--max count=1--pretty=format:'%H'--all--full history COMMI

我使用以下命令在文件上下文中获取上一次提交到另一次提交的密钥:

git log --max-count=1 --pretty=format:'%H' COMMITKEY~1 -- path/to/file
但如果文件被删除,它将返回一个错误:
stderr:'fatal:不明确的参数'path/to/file':未知修订或路径不在工作树中。

所以我试过这样的方法:

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

这实际上返回一个提交密钥,但总是最新的,而不是前一个。即使我将修订更改为
COMMITKEY~2
或其他内容,它也会返回相同的提交密钥


这里有什么问题?

第二个命令的问题是
--all
参数告诉
log
,除了您特别调用的任何提交ID(即
COMMITKEY~1
或其他什么),它还应该包括每个已知引用(分支、标记等)的历史记录。因此,返回值是它从任何ref或指定的提交中找到的第一个提交


但我不明白你是如何从第一个命令中得到你提到的错误的。
--
消除了参数的歧义(至少在我的测试和文档中是这样)。

第二个命令的错误在于
--all
参数告诉
log
除了您特别调用的提交ID之外(即
COMMITKEY~1
或其他),它应该包括每个已知参考(分支、标记等)的历史记录。因此,返回值是它从任何ref或指定的提交中找到的第一个提交


但我不明白你是如何从第一个命令中得到你提到的错误的。
--
消除了参数的歧义(至少,在我的测试和文档中是这样)。

您确定在第一个命令中使用了
--

使用
--all
可以很容易地解释您的第二个命令不起作用,因为
--all
相当于手动列出所有引用,因此您当然会得到返回的最新提交

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


如果您没有使用告诉git有路径跟随的
--
,则只会收到消息
“致命:不明确参数'path/to/file':未知修订或路径不在工作树中”
,当时Git不知道这是一个无法解析的ref还是一个历史记录中可能存在的路径。

您确定在第一个命令中使用了
--

使用
--all
可以很容易地解释您的第二个命令不起作用,因为
--all
相当于手动列出所有引用,因此您当然会得到返回的最新提交

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

如果您没有使用告诉git有路径跟随的
--
,则只会收到消息
“致命:不明确的参数'path/to/file':未知修订或路径不在工作树中,因为git不知道这是无法解析的引用还是历史中可能存在的路径