恢复Git仓库中已删除的文件夹

我删除了文件夹内的所有内容,并且该文件夹为空。 我在我的远程回购中仍然有一份副本。 但是,当我做了一个git pull它没有放回被删除的文件是不是应该这样做?

所以我做了一些研究,看到你可以通过执行git checkout <revision> -- <name of file>来恢复git checkout <revision> -- <name of file>

但是这只适用于文件。

我如何检索目录中的所有文件?


你可以用文件做的所有事情,你也可以使用文件夹。

还请注意在Git存储库中查找并恢复已删除的文件

文件从工作树中删除但尚未提交:

如果你还没有索引( git add )你的修改,你可以恢复一个目录的内容:

git checkout -- path/to/folder

如果删除已经编入索引,您应该先重置:

git reset -- path/to/folder
git checkout -- path/to/folder

恢复完整工作树(不是单个文件夹),但会丢失所有未提交的更改

git reset --hard HEAD

在过去某些提交中删除文件时:

找到影响给定路径的最后一个提交。 由于该文件不在HEAD提交中,因此该提交必须将其删除。

git rev-list -n 1 HEAD -- <file_path>

然后使用脱字号( ^ )符号检出之前提交的版本:

git checkout <deleting_commit>^ -- <file_path>

从遥远的提交恢复完整的工作树

git reset --hard <revision> 

如果您尚未提交更改,则可以恢复内容或目录:

git checkout -- removed_directory

如果您想恢复所有更改,请执行以下操作:

git reset --hard HEAD

唯一对我有用的是检出另一个文件夹中的回购。 假设当前的回购在/home/me/current

然后我做了

git clone /home/me/current /home/me/temp

这使得/home/me/temp中的repo单独克隆

我现在可以去/home/me/temp并做任何我想做的事情。 例如

git reset --hard commit-hash-before-delete

现在我可以将删除的文件夹复制回来

cp -r /home/me/temp/some/deleted/folder /home/me/current/some/deleted/folder

并删除临时文件夹

rm -rf /home/me/temp

例子

git checkout -- some/deleted/folder
git checkout -- some/deleted/folder/*

不工作

$ git checkout -- some/deleted/folder/*
zsh: no matches found: some/deleted/folder/*
$ git checkout -- some/deleted/folder
error: pathspec 'some/deleted/folder' did not match any file(s) known to git.

其他例子如

git reset --hard HEAD

除了被删除的文件之外都具有破坏性。 其他更改也将丢失。

同样

git reset --hard some-commit

some-commit后将失去任何some-commit

链接地址: http://www.djcxy.com/p/18945.html

上一篇: Restore a deleted folder in a Git repo

下一篇: What does the caret (^) character mean?