赞
踩
详情参考:
https://www.jianshu.com/p/c2ec5f06cf1a
git reset的本质是:移动HEAD以及它所指向的branch
三种不同的参数(–hard \soft\mixed):影响的是工作区和缓存区清空与保留
–hard:
参数 | 功能 | 场景 |
---|---|---|
–hard | 清空工作区与缓存区 | 放弃目标版本后所有的修改 |
–soft | 保留工作区与缓存区,但是把版本之间的差异存放在缓存区 | 合并多个commit |
–mixed(或缺省) | 保留工作区清空缓存区,把版本之间的差异存放在工作区 | 1、有错误的commit需要修改;2、git reset HEAD清空缓存区 |
$ git reset --hard HEAD #恢复当前版本,删除工作区和缓存区的修改
$ git reset --soft HEAD^ #恢复上一个版本,保留工作区,缓存区准备再次提交commit
$ git reset --mixed HEAD #恢复当前版本,保留工作区,清空缓存区
$ git reset --hard 1094a #切换到特定版本号,并删除工作区和缓存区的修改
#场景1:修改仅存在工作区
$ git checkout -- readme.txt # 单文件
#场景2:修改存在暂存区、工作区
$ git reset HEAD readme.txt
$ git checkout -- readme.txt
#场景3:修改存在版本库、暂存区、工作区
$ git reset --hard 1094a
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。