git-从以前的提交中恢复已删除的文件

git-从以前的提交中恢复已删除的文件

我意外删除了之前提交的一些文件,想恢复它们。我该怎么做?

我运行了这个并且发现了我所寻找的东西:

git whatchanged --diff-filter=D

在我提交时,我应该只提交新的/更改的文件,然后运行reset --hard以恢复丢失的文件。我需要恢复大约 100 个文件。

我不想直接恢复,因为那样也会撤消该提交中的更改。

有任何想法吗?

答案1

签出(克隆)到某处并在那里进行恢复。然后提取文件并删除某处。

答案2

Checkout my gist solution: 
https://gist.github.com/KalemaEdgar/a88a09b8bfbf4f63dafce67b7721600c

显示所有已删除文件的位置摘要。

$ git log --diff-filter=D --summary
commit fd87304411b93bbf7414f39251ba5e4134b27755 (HEAD)
Author: Kalema Edgar <[email protected]>
Date:   Wed May 1 14:02:36 2019 +0300

    Revert "Version 1.0.0 for app"

    This reverts commit 81585e50d2523c76f9ce7a4375e9b548895773f0.

 delete mode 100644 bootstrap.php
 delete mode 100644 composer.json
 delete mode 100644 composer.lock

查找影响路径的最后一个提交。文件被删除的路径

$ git rev-list -n 1 HEAD -- <file_path>
username@servername /htdocs/app ((fd87304...))
$ git rev-list -n 1 HEAD -- . (I am using a dot cause I am in the same directory)
fd87304411b93bbf7414f39251ba5e4134b27755

导致删除的提交是fd87304411b93bbf7414f39251ba5e4134b27755

检出该提交的版本以返回文件。

username@servername /htdocs/app ((fd87304...))
$ git checkout fd87304411b93bbf7414f39251ba5e4134b27755^ -- <filepath_to_recover>

$ git checkout fd87304411b93bbf7414f39251ba5e4134b27755^ -- .

相关内容