本地版本库 | 暂存区 | 工作区 | |
---|---|---|---|
soft | 回退 | 保持 | 保持所有 |
mixed | 回退 | 回退 | 保持所有 |
hard | 回退 | 回退 | 完全回退 |
keep | 回退 | 保持 | 保持另外的修改,仅回退提交的代码 |
- git reset --soft 仅将本地版本库回退到指定版本,缓存区和工作区不做改变
- git reset --mixed 将版本库回退的同时,将缓存区也清空,但工作区不做变更
- git reset --hard 将三个区域同时退回
- git reset --keep 将版本库回退的同时,将缓存区也清空,工作区中文件如果当前版本和退回版本之间没有发生过变动,则工作区的修改保持不便;如果发生了变动,并且工作区也进行了修改,需要自行合并(或者冲突解决)
keep介绍
首先这里创建了两个文件a.txt 和 b.txt
在a.txt变更2中仅修改了a.txt;b.txt没有变更
然后将b修改后,进行了add操作,提交到了暂存区:使用git status可以看到暂存区记录了b.txt的修改
现在我们再分别将a、b文件进行修改
如果直接使用git reset --keep进行回退会发现报错,因为上一个版本修改了a文件,并且我们工作区也对a进行了修改,这时git不允许回退。