git reset三种方式(--hard,--soft,--mixed)的区别

  git  reset 是用来撤回代码的,本质就是修改当前的HEAD指针的指向(移动当前HEAD以及它所指向的branch)。 

    git撤回代码有三种方式,分别是--hard、--soft、--mixed。使用方式是在命令后面加上相应的HEAD或者commit  ID。如(git reset  --hard  )。三种方式的区别总结如下。

    git reset  --hard  后,本地电脑上的工作区(working  tree )内容、暂存区(index/stage)内容以及Repository的内容,都会恢复到那个节点的代码,并且之前后面的所有都会被删除,所以,带上--hard参数后,所有未add的修改(也就是working tree )的修改、暂存区的修改(已经add过)以及commit到Repository的修改都会被删除,在很明确地知道某些修改的不需要的情况下,就可以使用--hard参数。

    git reset --soft的话,工作区(working tree )和暂存区(index/stage)的内容都不会被修改,不过--soft后所带来的差异(就是目标commit  ID)以后,所带来的所有的修改,会被保存到暂存区,也就是相当于git add 后但是没commit前,并且--soft后,目标commit  ID后面的所有commit ID也会消失,其实是任意一种方式都会这样,因为reset操作,本来就是要撤销提交的,那么目标commit  ID后面的commit ID肯定是要被删除的,要不就不叫撤销。

    git  reset --mixed 的话,只会保留工作区(working  tree) 的修改,暂存区以及--mixed带来的差异,会被全部放到工作区中,也就是相当于没有git  add之前的状态。如果这时候不想保留修改内容,可以直接git  checkout  即可。

你可能感兴趣的:(git reset三种方式(--hard,--soft,--mixed)的区别)