git-reset

用法一
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修改都是不允许的)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容