一、git reset [-q]
[<commit>] [--] <paths> ...
二、git reset [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
<commit>是可选项,可以使用引用或提交ID,如果省略<commit>相当于使用了HEAD的指向作为提交ID。
两种用法区别在于,第一种包含路径<paths>。为了避免路径和引用(或者提交ID)同名而发生冲突,可以在<paths>
前用两个连续的短线(--)作为分隔。
第一种
不会重置引用,更不会改变工作区,而是指定提交状态(<commit>)下的文件(<paths>)替换掉暂存区中的文件。例如git reset HEAD <paths> 相当于取消之前执行的git add <paths>相当于取消之前执行的 git add <paths> 命令时改变的暂存区。
第二种
会重置引用,根据不同的选项,可以对暂存区或工作区进行重置。
使用参数 --hard 如:git reset --hard <commit> 会执行:
1.替换引用的指向
2.替换暂存区。替换后,暂存区的内容和引用指向的目录树一致
3.替换工作区。替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的目录树内容相同。
使用参数--soft,如:git reset --soft <commit>会执行: 1.
替换引用的指向
使用参数--mixed或不使用参数,如:git reset <commit>会执行:1 2,即更改应用的指向及重置暂存区。但是不改变工作区。
示例:
解释待补充。。。
git reset
git reset HEAD
git reset --filename
git reset HEAD filename
git reset --soft HEAD ^
git reset HEAD^
git reset --mixed HEAD^
git reset --hard HEAD^