首页 > 解决方案 > Git 和 Github - 撤消

问题描述

我想从我的 git staging 中删除一个文件以提交。所以我做了“git reset --hard”。在尝试提交和推送文件的某个时候,我删除了文件夹中的文件。所以文件夹现在是外壳。我尝试了“git reflog”和“git reset”到以前的日志,但我无法取回文件。但是,我有一些静态文件。我如何删除文件夹中的文件?我可以恢复文件吗?

$ git reflog
189dab7 (HEAD -> master, origin/master) HEAD@{0}: reset: moving to HEAD
189dab7 (HEAD -> master, origin/master) HEAD@{1}: checkout: moving from 189dab70a4f924bb575b55162012516e2867730a to master
189dab7 (HEAD -> master, origin/master) HEAD@{2}: checkout: moving from master to remotes/origin/master
189dab7 (HEAD -> master, origin/master) HEAD@{3}: commit: large commit
8f4498f HEAD@{4}: reset: moving to 8f4498f
8f4498f HEAD@{5}: reset: moving to HEAD
8f4498f HEAD@{6}: reset: moving to HEAD
8f4498f HEAD@{7}: reset: moving to HEAD
8f4498f HEAD@{8}: commit: authors and quote ranks
8524f92 HEAD@{9}: commit: 'navigation'
7317450 HEAD@{10}: commit: Angular
373db2e HEAD@{11}: commit (initial): PreMean

标签: gitgithub

解决方案


我想从我的 git staging 中删除一个文件以提交。所以我做了“git reset --hard”

什么?不!一个简单git reset -- aFile的就够了。
Agit reset --hard将通过 HEAD 的内容覆盖工作树(您的磁盘)中的所有文件(并重置索引)。

git reflog仅当您提交了这些文件时才适用,但在这里,我怀疑您没有提交。

所以,就像在这里一样,试试这个git fsck --lost-found选项:

for b in $(git fsck --lost-found | grep blob | awk '{print $3}'); do \ 
   git cat-file -p $b > ../$b ;\
done

推荐阅读