在Git存储库中查找和恢复已删除的文件
假设我在Git存储库中。 我删除一个文件并提交该更改。 我继续工作,做更多的承诺。 然后,我发现我需要恢复该文件。
我知道我可以使用git checkout HEAD^ foo.bar
签出一个文件,但是我不知道该文件何时被删除。
我希望不必手动浏览我的日志,检查给定的SHA的整个项目,然后手动将该文件复制到我的原始项目结帐中。
找到影响给定路径的最后一个提交。 由于该文件不在HEAD提交中,因此该提交必须将其删除。
git rev-list -n 1 HEAD -- <file_path>
然后使用脱字号( ^
)符号检出之前提交的版本:
git checkout <deleting_commit>^ -- <file_path>
或者在一个命令中,如果$file
是有问题的文件。
git checkout $(git rev-list -n 1 HEAD -- "$file")^ -- "$file"
如果您使用的是zsh并启用了EXTENDED_GLOB选项,则脱字符号将不起作用。 您可以改为使用~1
。
git checkout $(git rev-list -n 1 HEAD -- "$file")~1 -- "$file"
git log --diff-filter=D --summary
获取已删除文件和文件被删除的所有提交; git checkout $commit~1 filename
来恢复被删除的文件。 要恢复文件夹中所有已删除的文件,请输入以下命令。
git ls-files -d | xargs git checkout --
链接地址: http://www.djcxy.com/p/413.html
上一篇: Find and restore a deleted file in a Git repository
下一篇: Can I store the .git folder outside the files I want tracked?