git add .之后,再 reset --hard 到上一个 commit,所有文件都没了,还有救么 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
ps
V2EX    git

git add .之后,再 reset --hard 到上一个 commit,所有文件都没了,还有救么

  •  
  •   ps 2016-10-07 01:28:47 +08:00 5107 次点击
    这是一个创建于 3314 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本来想把一个本地的项目弄到远程仓库上,第一个 commit 提交了一个 README ,然后 push 了 然后想着把项目剩余的其他文件提交上去,git add .之后,脑子抽了,又reset -hard到上一个 commit ,结果文件就这样没了,没了。。。这特么还能还原回来么,求助 /(ㄒoㄒ)/~~

    第 1 条附言    2016-10-07 02:28:12 +08:00
    绝望了,血一般的教训 /(ㄒoㄒ)/~~
    14 条回复    2016-10-09 09:57:52 +08:00
    df4VW
        1
    df4VW  
       2016-10-07 01:32:16 +08:00
    git fsck --lost-found
    johnnie502
        2
    johnnie502  
       2016-10-07 01:39:28 +08:00
    git reflog 找到 commit 的那个 sha ,然后 git reset --hard [sha] 过去即可
    ps
        3
    ps  
    OP
       2016-10-07 01:42:26 +08:00
    @df4VW 出来了一大堆,是要逐个恢复么
    msg7086
        4
    msg7086  
       2016-10-07 01:42:57 +08:00
    如果你文件没提交成功,那么 reset hard 是不会删除你文件的。
    如果 reset hard 以后你文件不见了,说明他已经在你提交记录里了,找下 reflog 即可。
    ps
        5
    ps  
    OP
       2016-10-07 01:44:06 +08:00
    @johnnie502 git reflog 只有第一次 commit 的记录,仓库里面只有 README 一个文件
    ps
        6
    ps  
    OP
       2016-10-07 01:47:14 +08:00
    @msg7086 我也很奇怪,但是 reflog 里面是只有一个提交记录
    ps
        7
    ps  
    OP
       2016-10-07 01:50:07 +08:00
    @msg7086 我在 git add . 之后没有提交,直接就 reset 了
    johnnie502
        8
    johnnie502  
       2016-10-07 01:54:14 +08:00
    只 add 但没 commit 的话,就只能从 fsck 里面找了
    ps
        9
    ps  
    OP
       2016-10-07 01:58:50 +08:00
    @johnnie502 有没有一个批量恢复的方法, fsck 里面有很多,应该都是要恢复的
    skydiver
        10
    skydiver  
       2016-10-07 02:01:19 +08:00 via iPad
    如果你不 git gc 的话,那个提交还在。翻翻命令行记录找到那个 commit 的 hash 然后 checkout 就行了。

    或者 reflog 找找那次提交的 hash 。
    sutra
        11
    sutra  
       2016-10-07 02:02:49 +08:00
    git fsck --lost-found
    ls -l .git/lost-found/other/
    jyz19880823
        12
    jyz19880823  
       2016-10-07 10:17:49 +08:00 via Android
    我办过这事,还好 Emacs 还有,直接把所有文件重新保存一次
    lechain
        13
    lechain  
       2016-10-07 10:52:43 +08:00
    git reflog ,应该可以看到记录,只要你没有进行 git gc 。
    有记录了就可以 checkout 回来
    lijinma
        14
    lijinma  
       2016-10-09 09:57:52 +08:00
    刚看到这个帖子就测试了一下,哈哈哈哈

    git fsck --lost-found 可以找到,不过会找回来很多。找回来后自己 grep 一下哪个是你的目标文件吧。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5734 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 02:54 PVG 10:54 LAX 18:54 JFK 21:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86