假设我在Git存储库中。我删除一个文件并提交更改。我继续工作,并做出更多承诺。然后,我发现删除该文件后需要恢复该文件。
我知道我可以使用gitcheckout<commit>--filename.txt签出文件,但我不知道该文件何时被删除。
如何查找删除给定文件名的提交?如何将该文件恢复到工作副本中?
假设我在Git存储库中。我删除一个文件并提交更改。我继续工作,并做出更多承诺。然后,我发现删除该文件后需要恢复该文件。
我知道我可以使用gitcheckout<commit>--filename.txt签出文件,但我不知道该文件何时被删除。
如何查找删除给定文件名的提交?如何将该文件恢复到工作副本中?
当前回答
要获得最佳方法,请尝试。
首先,找到删除文件的提交的提交id。它将为您提供已删除文件的提交摘要。
git-log--diff-filter=D--摘要git校验84sdhfddbdddf~1
注意:84sdhfddbddd是您的提交id
通过此操作,您可以轻松恢复所有已删除的文件。
其他回答
简单而精确-
首先,获取一个最新的稳定提交,其中您可以通过-
git log
假设您找到$commitid 1234567…,然后
git checkout <$commitid> $fileName
这将还原该提交中的文件版本。
如果删除了最新HEAD提交中存在的文件,则可以使用以下方法恢复该文件:
git checkout HEAD -- path/to/file.ext
获取已删除文件的所有提交以及已删除的文件:git-log--diff-filter=D--摘要记下所需的提交散列,例如e4e6d4d5e5c59c69f3bd7be2。将删除的文件从之前的一次提交(~1)还原到上面确定的提交(e4e6d4d5e5c59c69f3bd7be2):git签出e4e6d4d5e5c59c69f3bd7be2~1路径/to/file.ext注意~1。
优点:以下方法确实适用于文件/文件夹甚至从垃圾箱或回收站删除的情况。
文件/文件夹已从工作树中删除,但尚未提交:
I.如果您尚未对更改进行索引(gitadd),则可以还原目录的内容:
git restore--路径/to/folder_OR_file
二、如果删除已被索引,则应首先重置:
git reset—路径/to/folder_OR_file
然后执行,git restore path/to/folder_OR_file
文件/文件夹在过去的某些提交中被删除:
使用git-log--diff-filter=D--summary获取删除文件/文件夹的提交的详细信息;使用gitcheckout$commit~1path/to/folder_OR_file还原删除的文件/文件夹。其中$commit是您在步骤1中找到的提交的sha值,例如c7578994
要获得最佳方法,请尝试。
首先,找到删除文件的提交的提交id。它将为您提供已删除文件的提交摘要。
git-log--diff-filter=D--摘要git校验84sdhfddbdddf~1
注意:84sdhfddbddd是您的提交id
通过此操作,您可以轻松恢复所有已删除的文件。