协慌网

登录 贡献 社区

Git:如何在项目提交历史中找到已删除的文件?

曾几何时,我的项目中有一个文件,我现在希望能够获得。

问题是:我不知道何时删除它以及它在哪条路径上。

如何存在此文件的提交?

答案

如果您不知道可能使用的确切路径

git log --all --full-history -- **/thefile.*

如果您知道文件所在的路径,则可以执行以下操作:

git log --all --full-history -- <path-to-file>

这应该显示触及该文件的所有分支中的提交列表。然后,您可以找到所需文件的版本,并将其显示为...

git show <SHA> -- <path-to-file>

或者将其恢复到您的工作副本中:

git checkout <SHA>^ -- <path-to-file>

请注意插入符号( ^ ),它在标识之前得到结帐,因为在<SHA>提交时删除文件,我们需要查看上一次提交以获取已删除文件的内容

获取已删除文件的列表并复制已删除文件的完整路径

git log --diff-filter=D --summary | grep delete

执行下一个命令以查找该提交的提交 ID 并复制提交 ID

git log --all -- FILEPATH

显示已删除文件的差异

git show COMMIT_ID -- FILE_PATH

请记住,您可以使用> like 将输出写入文件

git show COMMIT_ID -- FILE_PATH > deleted.diff

无法编辑已接受的响应,因此在此处将其添加为答案,

要在 git 中恢复文件,请使用以下内容(注意 SHA 之后的 '^' 符号)

git checkout <SHA>^ -- /path/to/file