本来想把一个本地的项目弄到远程仓库上,第一个 commit 提交了一个 README ,然后 push 了
然后想着把项目剩余的其他文件提交上去,git add .
之后,脑子抽了,又reset -hard
到上一个 commit ,结果文件就这样没了,没了。。。这特么还能还原回来么,求助 /(ㄒoㄒ)/~~
1
df4VW 2016-10-07 01:32:16 +08:00
git fsck --lost-found
|
2
johnnie502 2016-10-07 01:39:28 +08:00
git reflog 找到 commit 的那个 sha ,然后 git reset --hard [sha] 过去即可
|
4
msg7086 2016-10-07 01:42:57 +08:00
如果你文件没提交成功,那么 reset hard 是不会删除你文件的。
如果 reset hard 以后你文件不见了,说明他已经在你提交记录里了,找下 reflog 即可。 |
5
ps OP @johnnie502 git reflog 只有第一次 commit 的记录,仓库里面只有 README 一个文件
|
8
johnnie502 2016-10-07 01:54:14 +08:00
只 add 但没 commit 的话,就只能从 fsck 里面找了
|
9
ps OP @johnnie502 有没有一个批量恢复的方法, fsck 里面有很多,应该都是要恢复的
|
10
skydiver 2016-10-07 02:01:19 +08:00 via iPad
如果你不 git gc 的话,那个提交还在。翻翻命令行记录找到那个 commit 的 hash 然后 checkout 就行了。
或者 reflog 找找那次提交的 hash 。 |
11
sutra 2016-10-07 02:02:49 +08:00
git fsck --lost-found
ls -l .git/lost-found/other/ |
12
jyz19880823 2016-10-07 10:17:49 +08:00 via Android
我办过这事,还好 Emacs 还有,直接把所有文件重新保存一次
|
13
lechain 2016-10-07 10:52:43 +08:00
git reflog ,应该可以看到记录,只要你没有进行 git gc 。
有记录了就可以 checkout 回来 |
14
lijinma 2016-10-09 09:57:52 +08:00
刚看到这个帖子就测试了一下,哈哈哈哈
git fsck --lost-found 可以找到,不过会找回来很多。找回来后自己 grep 一下哪个是你的目标文件吧。 |