git - 在 Git 存储库中恢复已删除的文件夹

标签 git git-checkout

我删除了一个文件夹中的所有内容,但该文件夹是空的。我的远程仓库中还有一份副本。但是当我做了 git pull它没有放回已删除的文件是不是应该这样做?

所以我做了一些研究,发现您可以通过以下方式恢复文件 git checkout <revision> -- <name of file>

但这只适用于文件。

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

最佳答案

您可以对文件执行的所有操作,也可以对文件夹执行。

另请注意 Find and restore a deleted file in a Git repository


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

如果您还没有索引(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 - 在 Git 存储库中恢复已删除的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30875205/

相关文章:

git-checkout - 如何递归地检查 GIT 存储库中所有出现的文件名?

git - Sublime Text 3 + Git 包 : won't launch difftool (Meld)

git - 我怎样才能去掉几个旧的提交,但在 git 中保持所有其他提交不变?

windows - 如何仅在 TortoiseGit 或 Windows 中的 diff 中获取更改的行?

git - Git 中的文件级别跟踪(来自同一目录中多个分支的文件)

Git,如何将 origin/master 重置为提交?

git - 本地 Jenkins 无法验证远程 Gitlab 私有(private)仓库

Git ignore 不忽略指定的文件夹/文件

git - 如何仅从给定提交中记录的文件中恢复几行?

Git:如何在忽略所有本地更改的情况下 checkout 分支?