从提交记录中恢复已删除的文件

12

我刚刚完成以下一系列步骤,但不知道如何恢复我的文件。

  1. git add file.txt
  2. git commit -m "Message"
  3. rm file.txt
  4. git commit -am "Message"

理想情况下,我应该在第二步后推送我的更改,然后再删除,但我忘记了。是否有办法恢复文件?

非常感谢!

2个回答

28

您可以使用 checkout 命令从以前版本中恢复文件:

git checkout HEAD^ file.txt

如果文件在早期提交中被删除了(假设为229da640),您可以通过传递提交的SHA1,然后加上^来恢复它:

如果文件在较早的提交中被删除了(假定为229da640),则可以通过传递提交的SHA1,后跟^,来恢复该文件:

git checkout 229da640^ file.txt
如果您尚未推送提交,您可能更希望重置提交而不是撤消提交:
git reset --hard HEAD^

这将重置您的工作树以与先前提交相同的状态。在先前的提交之后进行的所有更改都将消失。

如果您不希望删除所有更改,只需撤销提交本身的操作即可,您可以不使用 --hard 选项进行重置,并使用以下方法恢复已删除的文件:

git reset HEAD^
git checkout file.txt

^file.txt 是必需的吗?如果我不记得文件名怎么办?我考虑过一种(傻)情况,我会在一个新文件中编写一个新功能,然后一年后将其删除,然后再过一年想要重新使用。查看第一个提交记录(也就是在我删除它之前的那个提交记录)是否会显示该功能文件? - Merricat

2

最好的方法是尝试一下

首先找到删除您文件的提交ID。它将为您提供删除文件的提交摘要。

git log --diff-filter=D --summary

git checkout 84sdhfddbdddf~1

Note- 84sdhfddbddd is your commit id

通过这个,您可以轻松恢复所有已删除的文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接