我意外删除了之前提交的一些文件,想恢复它们。我该怎么做?
我运行了这个并且发现了我所寻找的东西:
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^ -- .