
本来想把一个本地的项目弄到远程仓库上,第一个 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 一下哪个是你的目标文件吧。 |