目录
HEAD分离状态
准备提交结构
切换到 master 并将 master 重置到第二次提交
删除 bugFix
新建 bugFix 分支
切换到 master 并做一次提交
切换到bugFix,并做一次提交
对 bugFix 再做一次提交
HEAD分离状态
用哈希值切换到最后一次提交
这时,HEAD 和 bufFix 是分离的状态
操作符 ^
切换到 master
现在,HEAD 在 master 位置
使用操作符 “^” 切换到 c3
git checkout bugFix^
# 在 dos 命令中,^是特殊符号,需要加双引号,所以要写成:
git checkout "bugFix^"
在 Terminal 终端中运行命令
现在,HEAD 在 bugFix 的上一个提交位置
操作符 ~ 和强制移动分支位置
准备提交结构
切换到 master
提交一次
再切换到 bugFix 提交一次
HEAD移动到 master 的上一个提交
git checkout "master^"
bugFix 强制移动到 bugFix^
通过 -f 参数可以强制移动分支的位置
git branch -f bugFix "bugFix^"
- 1
bugFix 分支上现在有一个隐藏的提交:“添加打印-2”,看一下它的哈希值
git reflog
- 1
操作符 ~ 和强制移动分支位置
master 强制移动到隐藏提交上(上一步看到的哈希值)
git branch -f master b6c4
- 1
bugFix 强制移动到初始提交
git branch -f bugFix bugFix~3
- 1
切换到第二次提交
git checkout "HEAD^"
reset 和 revert
准备提交结构
master 重置到第二次提交,删除 bugFix 分支
新建 pushed 分支,并提交一次
重新切换到master,再新建 local 分支并执行一次提交
用 reset 撤销提交
重置 local 分支到上一个提交
git reset local^
# dos中要加双引号
git reset "local^"
local 的提交被撤销了
用 revert 撤销提交
先切换到 pushed 分支,然后用 revert 撤销pushed分支的变更
revert 会在当前分支上前进一步,生成的新的提交
新生成的提交与“添加打印2”的提交相同,相当于把“添加打印3”撤销了