用法一
git reset <mode> commit
1 更新refs/head/<name>的值为commit
2 更新index区域
3 更新work区域
mode的解释
--soft (只重置头)
--mixed (更新index区域)
--hard (更新index区域和work区域)
--merge:
1 更新index区域
2 对于两个commit中,内容不等的文件:只有work区变化的文件会报错
3 对于两个commit中,内容相等的文件:只有work区变化的文件会保留
--keep
1 更新index区域
2 对于两个commit中,内容不等的文件:work区,index区变化的文件都会保留
3 对于两个commit中,内容相等的文件:work区,index区变化的文件都会保留
说明
merge和keep,是为了这样一种场合准备的,即
我重置的时候,想保留一些本地文件在work区,而其它的reset --hard
哪些文件保留呢?
前后两个commit,都没有修改的这些文件可以保留
如何保留呢?
对于只有work区变换的保留(即--merge)
对于工作区和index区变换的保留(即--keep)
总结
对于两个版本一致的文件
merge,只保留了work tree里面的修改(两个commit文件不一致的文件,做了work tree修改是不允许的)
keep,即保留了work tree里面的修改,也保留了index里面的修改(两个commit文件不一致的文件,做了work tree或者index修改都是不允许的)
网友评论