假设我在Git存储库中。我删除一个文件并提交更改。我继续工作,并做出更多承诺。然后,我发现删除该文件后需要恢复该文件。
我知道我可以使用gitcheckout<commit>--filename.txt签出文件,但我不知道该文件何时被删除。
如何查找删除给定文件名的提交?如何将该文件恢复到工作副本中?
假设我在Git存储库中。我删除一个文件并提交更改。我继续工作,并做出更多承诺。然后,我发现删除该文件后需要恢复该文件。
我知道我可以使用gitcheckout<commit>--filename.txt签出文件,但我不知道该文件何时被删除。
如何查找删除给定文件名的提交?如何将该文件恢复到工作副本中?
当前回答
这是我发现的最简单的解决方案,如果您只想在master中恢复相同的文件:
git checkout master -- path/to/File.java
其他回答
要还原文件夹中的所有已删除文件,请执行以下操作:
git ls-files -d | xargs git checkout --
要获得最佳方法,请尝试。
首先,找到删除文件的提交的提交id。它将为您提供已删除文件的提交摘要。
git-log--diff-filter=D--摘要git校验84sdhfddbdddf~1
注意:84sdhfddbddd是您的提交id
通过此操作,您可以轻松恢复所有已删除的文件。
user@bsd:~/work/git$ rm slides.tex
user@bsd:~/work/git$ git pull
Already up-to-date.
user@bsd:~/work/git$ ls slides.tex
ls: slides.tex: No such file or directory
还原删除的文件:
user@bsd:~/work/git$ git checkout
D .slides.tex.swp
D slides.tex
user@bsd:~/work/git$ git checkout slides.tex
user@bsd:~/work/git$ ls slides.tex
slides.tex
这是我发现的最简单的解决方案,如果您只想在master中恢复相同的文件:
git checkout master -- path/to/File.java
如果你只做了更改并删除了一个文件,但没有提交它,而现在你放弃了你的更改
git checkout -- .
但是删除的文件没有返回,只需执行以下命令:
git checkout <file_path>
很快,你的文件回来了。