git - 无需提交即可恢复git repo中的文件

标签 git github

我在 Github 上创建了一个 Git 存储库和一个 Remote 。在我制作的项目文件夹中 git init被遗忘的第一个 git commit .在我从远程存储库制作 git pull 并且我在本地文件夹中的所有文件消失后。我试过

git reset --hard origin/master
git reset --hard
git checkout <filename>
git checkout -f master

但这对我没有帮助。到处写需要恢复上次提交但我没有他的。

如何恢复我的所有文件?

最佳答案

不是很清楚你之前是否提交过git pull或不。也不清楚文件是如何被清除的,因为 Git 会首先询问您,除非您使用了强制标志之一。

无论如何,如果您在某个时候提交了文件,那么它们可能不会丢失。你确定你在任何分支上都没有它们吗?首先检查这个:

git log --graph --decorate --all --oneline

如果您没有看到您的提交,那么您可以尝试使用以下方法恢复已删除的文件:
git fsck --lost-found

输出可能如下所示:
Checking object directories: 100% (256/256), done.
Checking objects: 100% (3/3), done.
dangling blob 058a46ad6fec7b6ee95710eb06daa0b8169a5da0
dangling blob f1d509348c7689f0f127d9eba5324db8221d5603

注意悬垂的 Blob 。它们是已删除的文件。您可以通过 git show SHA1 查看他们的内容,或者您可以在 .git/lost-found/other/ 中找到这些文件.

另一方面,如果您从未提交或暂存原始文件,那么它们就完全消失了。如果您从未将它们告诉 Git,那么它就不知道它们,因此无法使用 Git 进行恢复。

关于git - 无需提交即可恢复git repo中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22272040/

相关文章:

Github 的 PR 差异算法 : can you swap it?

git - 如何删除不小心推送的东西

git - merge Git 存储库

git push --mirror 没有 pull refs

Git:无法识别的分支名称

git - 在没有 pull 请求的情况下直接提交和同步?

git - 如何为git启用多个用户名? IE。特定项目可以有特定的用户名

git - 如何以编程方式确定 Git checkout 是否是标签,如果是,标签名称是什么

git - 使用 CopSSH 在 Windows 上设置 Git 服务器,但出现此错误 : does not appear to be a git repository

GIT,不要 merge 特定文件