在git中查找已删除的文件

时间:2017-06-26 20:17:18

标签: git

我正在尝试恢复不再位于git存储库中的文件。

我可以看到该文件是在我运行时确定的:

git log --all --full-history --diff-filter=A --summary | grep filename

但是我无法找到文件被删除的时间:

git log --all --full-history --diff-filter=D --summary | grep filename

该文件肯定不再存在,所以我对它为什么不会显示有点困惑?

2 个答案:

答案 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)

给这篇文章看一看,它应该有你需要的答案

Find and restore a deleted file in a Git repository