今天下午刚开始学 git,遇到一个麻烦,请教各位 V 友 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
giskard
V2EX    git

今天下午刚开始学 git,遇到一个麻烦,请教各位 V 友

  •  
  •   giskard 2015-04-05 16:54:17 +08:00 4773 次点击
    这是一个创建于 3848 天前的主题,其中的信息可能已经有所发展或是发生改变。

    新学git,遇到一个问题,我先描述一下:
    git init在一个目录下创建了一个repository,然后在里面建立了两个文件,test1和test2。
    我一边学一遍在test1里记录学习过程,对test1进行了几次修改,git add -> git commit 了几次。

    然后我开始编辑test2,随便增加几行内容,然后git add test2 -> git commit 了三次。

    我创建test2的目的是用来测试版本回退即git reset 的用法。
    在最后一次git add test2 和git commit 以后,我又对test1进行了修改,但是修改完以后没有进行 git add test1 和 git commit。
    然后我执行了版本回退,git reset --hard HEAD^,结束以后,发现 test2回退到了上一个版本,但是同时,test1的内容也发生了变化:在最后一次git add test2 和git commit 以后对test1增加的内容都没了。

    我大概知道是因为我没有在修改test1后进行git add 和 git commit 造成的。

    问题是,这种情况下,还有可能找回test1丢失的部分吗?

    21 条回复    2015-04-06 14:01:27 +08:00
    networm
        1
    networm  
       2015-04-05 17:26:53 +08:00   1
    不能,文件被删除了,你可以尝试用磁盘恢复软件找一下
    giskard
        2
    giskard  
    OP
       2015-04-05 17:34:10 +08:00
    @networm 好的,谢谢。丢失的文件不太重要,所以无所谓了。我记住这个教训了。
    Earthman
        3
    Earthman  
       2015-04-05 18:09:28 +08:00   1
    用了hard就会清空工作区呢,先去把书好好读下吧,反正不多的
    msg7086
        4
    msg7086  
       2015-04-05 18:13:10 +08:00 via iPhone
    慎用hard reset
    giskard
        5
    giskard  
    OP
       2015-04-05 19:50:38 +08:00
    @Earthman 嗯,好的,继续看书去了。今天下午刚开始学,我在拿无关紧要的文件做实验呢,其实我也还不知道--hard的含义
    giskard
        6
    giskard  
    OP
       2015-04-05 19:50:51 +08:00
    @msg7086 谢谢提醒
    zeayes
        7
    zeayes  
       2015-04-05 21:37:01 +08:00
    不能,git只是找回已提交的数据。

    工作区修改的内容,不提交到版本库,丢了就找不回来了。
    VirgilMing
        8
    VirgilMing  
       2015-04-05 22:00:00 +08:00
    revert 就可以了吧,reset 也太暴力了……
    raikecody
        9
    raikecody  
       2015-04-05 23:06:57 +08:00
    @giskard 看什么书请问?
    ilotuo
        10
    ilotuo  
       2015-04-05 23:22:35 +08:00 via Android
    @raikecody
    官方gitpro挺好的。
    lz的问题我也有过一次教训… 慎用reset
    多从git设计方法考虑问题。人家肯定想到有回退版本而保留修改的方法。
    个人看法
    Andiry
        11
    Andiry  
       2015-04-06 00:28:41 +08:00
    只要多push,就没这个问题
    magicianzrh
        12
    magicianzrh  
       2015-04-06 00:38:35 +08:00
    干这种事情前先git status下,不要这么暴力
    47jm9ozp
        13
    47jm9ozp  
       2015-04-06 01:08:24 +08:00
    不要用reset --hard,太暴力了。。可以考虑reset --mixed
    adami
        14
    adami  
       2015-04-06 06:55:22 +08:00 via iPhone
    必须commit了才能恢复吧
    giskard
        15
    giskard  
    OP
       2015-04-06 10:44:58 +08:00
    giskard
        16
    giskard  
    OP
       2015-04-06 10:47:49 +08:00
    @magicianzrh 是,我现在也意识到了,git status很有用。我还需要多学习,主要是当时运行的时候就是照着教程在试,也没去管reset --hard是什么含义。反正也只是随便弄了几个文件在试,所以没什么损失。
    giskard
        17
    giskard  
    OP
       2015-04-06 10:48:25 +08:00
    @VirgilMing 嗯,revert命令我还没看到,我继续学,谢谢提醒
    giskard
        18
    giskard  
    OP
       2015-04-06 10:49:24 +08:00
    @ooxxcc 好的,谢谢提醒,我去看看--mixed的含义
    jianghu52
        19
    jianghu52  
       2015-04-06 11:29:55 +08:00
    楼主更应该改变的是一种习惯。
    git的理念是小步快跑,鼓励迭代。所以理想的状态是,当你准备做回滚,或者新开分支,你的本地版本应该是全部提交的状态。这样不管你做什么样的操作,都不会有丢失的问题。
    w99wen
        20
    w99wen  
       2015-04-06 14:00:04 +08:00
    如果是用的git reset,可以用git reflog看下记录,然后用git reset loghash --hard 跳转回去。
    giskard
        21
    giskard  
    OP
       2015-04-06 14:01:27 +08:00
    @jianghu52 谢谢提醒,我记住了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2765 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 04:05 PVG 12:05 LAX 21:05 JFK 00:05
    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