Git reset 中四大模式:soft、mixed、hard、keep 的区别
Git reset 中四大模式:soft、mixed、hard、keep 的区别
目录
工作区 | 暂存区 | 本地版本库 | |
---|---|---|---|
soft |
保持所有 | 保持 | 回退 |
mixed | 保持所有 | 回退 | 回退 |
hard | 保持 Untracked 文件(红色), 回退提交(黑色或蓝色)和暂存区(绿色)中的文件或代码 |
回退 | 回退 |
keep | 保持 Untracked 文件和暂存区文件,仅回退提交的文件或代码 | 保持 | 回退 |
git reset --soft(常用)
🔎 仅将本地版本库回退到指定版本,并将该指定版本之后的文件或代码回到暂存区中去。
⚠️ 原暂存区和工作区文件或代码保持原状态,不会丢失文件或代码。
回退前:
.
回退后:
.
git reset --mixed(默认)
🔎 将本地版本库回退到指定版本,并将该指定版本之后的文件或代码回到工作区中去,也将暂存区中的文件或代码回到工作区中。
⚠️ 工作区保持原状态,不会丢失文件或代码。
回退前:
.
回退后:
.
git reset --hard(慎用)
🔎 回退后,本地代码就是你回退版本的代码(彻底回退,所有改变的内容都不见了,慎用!)
回退前:
.
回退后:
.
git reset --keep(吃灰)
🔎 将本地版本库回退的同时,将暂存区也清空,工作区中文件如果当前版本和退回版本之间没有发生过变动,则工作区的修改保持不便;如果发生了变动,并且工作区也进行了修改,需要自行合并(或者冲突解决)
回退前:
.
回退后:
.