Git 回退三大参数 --hard --mixed --soft 从工作区到分支范围:hard > mixed > soft 一、git reset --hard [ID] 范围:工作区到暂存区再到分支(都变到提交的日志ID(默认最近一次)) 示例: 现在我成功提交了两次作业,现在我需要回退到第一次作业的状态。 回退版本 -->“第一次作业的ID” <38ddbee> 现在已经回退到“第一次作业(38ddbee)”状态,但是无法回到“第二次作业”,因为“暂存区”,“工作区”,“分支”都回退到了这个状态;所以此操作需要谨慎考虑 二、git reset --mixed [ID] 范围:暂存区(丢失最新一次add),工作区(可以恢复到最新,但是工作区文件不会丢失文件) 示例: 现在有三个提交好的文件,然后add错误了一个“新建文件文档.txt”,需求:取消本次add(删除暂存区的这次记录),文件的下标有个“+”号,添加成功。 现在回退到上次成功提交的状态即可。 现在发现文件的“+”号已经消失,说明就删掉了上次的误add。(在此命令中后面没有添加日志Id,即是恢复到最近的一次成功提交的状态)。 之所以这个操作不会影响工作区的内容(删除文件),只会影响工作文件的状态(图标),是因为此操作可以回到任何点的add前的状态。如下图:节点1到3的状态都是可以自由切换的,唯一就是恢复到1,2,3后,节点3后面的add后的暂存区永久丢失。(大多时候是来解决误add的) 三、git reset --soft [ID] 范围:工作区,暂存区,分支 >> 不会修改任何内容,只会将分支的指针指向你的目的节点,工作区状态也同步变化。 示例: 现在操作了add 到缓存区,然后切换到上一个分支 切换到是上一个分支。 看work5.txt的状态,变为了土灰感叹号,说明切换成功。现在有恢复之前的状态(切换到最新的分支即可) 现在已恢复到 b91f6bb,work5.txt文件的状态恢复到了之前的状态,并且暂存区也没有丢失。所以此操作是不会影响到任内容的改变。最为保险的操作。 四、最后祝大家次次提交成功。