我正在尝试恢复不再位于git存储库中的文件。
我可以看到该文件是在我运行时确定的:
git log --all --full-history --diff-filter=A --summary | grep filename
但是我无法找到文件被删除的时间:
git log --all --full-history --diff-filter=D --summary | grep filename
该文件肯定不再存在,所以我对它为什么不会显示有点困惑?
答案 0 :(得分:1)
更新。
首先要确保diff-filter
没有欺骗你,因为如果git将文件视为"移动"或者"重命名"然后diff-filter
的{{1}}无法捕捉到它。但即使将D
排除在等式之外,也不会显示正在移动或移除的文件。
这意味着它从未被移动或移除过。如果你在工作树中没有看到它,那么
(1)删除文件但未提交 (2)删除文件未跟踪 (3)文件从未在当前分支上
我打赌(3)。您用来查找"创建"的命令记录搜索所有refs的历史记录。取出diff-filter
参数并询问当前提交的历史记录
--all
您是否仍然看到正在创建的文件?如果没有,那么它只在不同的分支上提交。例如,如果你有
git log --full-history --diff-filter=A --summary | grep filename
也许该文件已添加到提交x --- x --- H <--(master)
\ ^HEAD
A --- x <--(develop)
中,您可以在A
的历史记录中看到(或使用develop
时)。但是当然文件不会出现在--all
中(这是您在此方案中已经检出的)或其历史记录。所以它没有被删除。
如果 文件是在当前提交的历史记录中创建的,但从未被删除,那么它将在当前提交中。唯一的原因是,为什么你没有看到它是否已从工作树中删除,但删除尚未提交,可能尚未添加。
答案 1 :(得分:0)
给这篇文章看一看,它应该有你需要的答案