git reset有两种用法,一种用法在命令中包含路径<paths>,这种方法不会改变引用,也不会改变工作区,而是用指定提交状态下的文件替换掉暂存区的文件,相当于取消之前git add操作。


第二种方法,不使用路径<paths>则会重置引用。

命令格式为:git reset [--soft | --mixed | --hard] [<commit>]


参数--soft  只更改引用的指向,不更改缓存区和工作区


参数--mixed或不使用参数 既更改引用也重置缓存区 但是不改变工作区


参数--hard 不但更改引用重置缓存区 也对工作区进行更改


git reset HEAD或git reset  不改变引用也不改变工作区,只将之前用git add命令更新到暂存区的内容撤出暂存区


git reset -- filename 仅仅将指定文件的改动撤出暂存区,工作区和引用不变。


git reset HEAD^   工作区不变,暂存区和引用都回退一次


git reset --hard HEAD^   彻底撤销提交,工作区,暂存区和引用都退回到上一次的提交状态。


个人感觉git reset命令,需用在工作做反复使用才能熟练掌握。