• Allen
    2018-12-30
    修改了工作区,恢复:git checkout

    add后,想撤销: git reset HEAD

    commit后,想撤销: git reset--hard hash值
    
     16
  • Vee
    2018-12-20
    哈哈 后悔药:

    先 git reflog 查看命令历史, 记录每次的命令
    然后进行你想找回的commit
    git reset --hard commit_id

    展开
    
     8
  • HardToGiveaName
    2019-01-13
    老师,我对比了一下 git reset --hard <pre_commit_id> 指令执行前后,.git/objects下的文件组织结构并没有改变,这种情况下其实只是改变了HEAD的指向。
    也即git并没有把历史的记录彻底 "reset hard" 掉,其实仍然存在“反悔”的机会。
    那有没有一种方式彻底改变git的历史文件结构,彻底将 reset 前至 pre_commit_id 这段历史彻底消除呢?
     1
     4
  • 极客星星
    2019-06-16
    老师 能否讲下如何回退中间指定的commit

    作者回复: C1 <-- C2 <-- C3 <-- C4 , Cn全部是commit,且C1是C2的父亲,依此类推。

    你的问题是说“如果C3有问题,你想撤销C3的修改,为此生成C5,历史树变成C1 <-- C2 <-- C3 <-- C4 <-- C5”,对吗?如果是这样,执行 git revert C3 ,就会生成C5,且C5就是清除C3的变更 。

    如果你无须保留 C3和C4,只想让分支回到C2,那么执行 git reset --hard C2 。⚠️我用了--hard,它会把工作区和暂存区都回退到C2,如果你想保留工作区,请不要使用 --hard ;如果甚至想保留暂存区的变更,那么必须加上 --soft C2。

    有空请理解reset带了不同参数的三个操作的区别:
    git reset --hard C2
    git reset C2
    git reset --soft C2

    C2代表某个commit



    
     2
  • 一步
    2018-12-28
    git reset --hard commit_id 这个命令使用的时候,要考虑清楚
    
     1
  • 此生不换
    2019-11-14
    老师,为什么我用git reset --hard 命令需要执行两次才会重置暂存区??

    作者回复: 会不会是git的bug?你把两次执行的返回结果打出来看一下吧

    
    
  • yan华建
    2019-05-25
    回退工作区的修改使得和暂存区的一致:Git checkout --
    add 到暂存区后,想回退暂存区的修改:Git reset --head filename
    
    
我们在线,来聊聊吧