目录
一、版本回退 reset
1.1 指令:
执行 git reset 命令用于回退版本,可以指定退回某⼀次提交的版本。要解释⼀下 "回退" 本质是要将版本库中的内容进行回退,工作区或暂存区是否回退由命令参数决定:
git reset 命令语法格式为:
git reset [--soft | --mixed | --hard] [HEAD]
1.2 参数说明:
- --mixed 为默认选项,使用时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容,工作区文件保持不变。
- --soft 参数对于工作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
- --hard 参数将暂存区与工作区都退回到指定版本。切记工作区有未提交的代码时不要用这个命 令,因为工作区会回滚,你没有提交的代码就再也找不回了,所以使用该参数前⼀定要慎重。
我们用一个表格来理解:
参数 | 工作区 | 暂存区 | 版本库 |
--mixed | 不变 | 回退 | 回退 |
--soft | 不变 | 不变 | 回退 |
--hard | 回退 | 回退 | 回退 |
HEAD 说明:
- 可直接写成 commit id,表示指定退回的版本
- HEAD表示当前版本
- HEAD^ 上⼀个版本
- HEAD^^ 上上⼀个版本
- 以此类推...
可以使用〜数字表示:
- HEAD~0 表⽰当前版本
- HEAD~1 上⼀个版本
- HEAD^2 上上⼀个版本
- 以此类推...
1.3 演示:
为了方便演示,我们需要做一些准备工作,对ReadMe文件做了三次提交,具体内容如下:
#第一次提交
zyq@iZm5egpp4a85g2tfliaeikZ:~/gitcode$ vim ReadMe
zyq@iZm5egpp4a85g2tfliaeikZ:~/gitcode$ cat ReadMe
hello git
hello git
aaaaa
bbbbb
zyq@iZm5egpp4a85g2tfliaeikZ:~/gitcode$ git add .
zyq@iZm5egpp4a85g2tfliaeikZ:~/gitcode$ git commit -m"ReadMe version1"
[master 771fbc6] ReadMe version1
1 file changed, 1 insertion(+)
#第二次提交
zyq@iZm5egpp4a85g2tfliaeikZ:~/gitcode$ vim ReadMe
zyq@iZm5egpp4a85g2tfliaeikZ:~/gitcode$ cat ReadMe
hello git
hello git
aaaaa
bbbbb
ccccc
zyq@iZm5egpp4a85g2tfliaeikZ:~/gitcode$ git add .
zyq@iZm5egpp4a85g2tfliaeikZ:~/gitcode$ git commit -m"ReadMe version2"
[master e9c0a2d] ReadMe version2
1 file changed, 1 insertion(+)
#第三次提交
zyq@iZm5egpp4a85g2tfliaeikZ:~/gitcode$ vim ReadMe
zyq@iZm5egpp4a85g2tfliaeikZ:~/gitcode$ cat ReadMe
hello git
hello git
aaaaa
bbbbb
ccccc
ddddd
zyq@iZm5egpp4a85g2tfliaeikZ:~/gitcode$ git add