恢复 git 上删除分支时删除的文件

Restore files on git that were deleted when a branch was deleted

我知道在 SO 上有很多关于这个主题的类似问题,所以如果这是重复的,我深表歉意。但是,我认为这个案例与我见过的其他案例相比是独一无二的。

我的 repo 目录中有一些本地文件,我没有意识到这些文件未被跟踪。然后我创建了一个新的本地分支,对目录结构进行了重大更改,并对整个目录进行了 git 添加并提交(这是我能想到的提交重组的最方便的方式)。

后来我改变了对重组的想法,所以我删除了整个分支而不合并它,但不幸的是,这删除了所有其他分支中不存在的以前未跟踪的文件。

我能够从已删除的分支中找到提交并检查它们,但是已删除的文件无处可寻。我也试过使用:

 git log -- <filepath>

不幸的是,它也没有显示任何内容。这些文件在删除分支时肯定被删除了,所以它们一定在某个时候被git跟踪过,但我根本找不到任何东西。

如果文件确实被提交,并且您的 reflog 没有被删除(默认情况下 - 30 天),您应该能够通过以下方式查看哪些提交影响了一组特定的文件或目录:

git reflog -- path/to/some/file.txt
git reflog -- path/to/some/file.txt path/to/another/file.txt
git reflog -- path/to/some/directory
git reflog -- */some.file 

如果它没有出现,则意味着它从未被添加到提交中。

如果它可能被隐藏了,那么以下命令可以提供帮助:

git stash list -- path/to/some/file.txt