假设我在 Git 存储库中。我删除一个文件并提交该更改。我继续工作并做出更多 promise 。然后,我发现我需要在删除该文件后将其恢复。
我知道我可以使用 git checkout <commit> -- filename.txt
checkout 文件,但我不知道该文件何时被删除。
- 如何找到删除给定文件名的提交?
- 如何将该文件恢复到我的工作副本中?
最佳答案
找到影响给定路径的最后一次提交。由于该文件不在 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 - 如何在 Git 存储库中查找和恢复已删除的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/953481/