文章目录
- 说明
- HEAD分离状态
- 准备提交结构
- HEAD分离状态
- 操作符 ^
- 操作符 ~ 和强制移动分支位置
- 准备提交结构
- 操作符 ~ 和强制移动分支位置
- reset 和 revert
- 准备提交结构
- 用 reset 撤销提交
- 用 revert 撤销提交
说明
本教程按照 git在线练习 顺序进行,将在线测试的命令操作落地到 IDEA,使用开发工具来实现所有在线练习中的操作。
你可以结合 git在线练习 来学习本教程,先在线学习git命令,再在 IDEA 中实现相同操作。
HEAD分离状态
准备提交结构
切换到 master 并将 master 重置到第二次提交
删除 bugFix
新建 bugFix 分支
切换到 master 并做一次提交
切换到bugFix,并做一次提交
对 bugFix 再做一次提交
上面的提交历史对照 learngitbranching.js.org 的结构图
HEAD分离状态
用哈希值切换到最后一次提交
这时,HEAD 和 bufFix 是分离的状态
上面的提交历史对照 learngitbranching.js.org 的结构图
操作符 ^
切换到 master
现在,HEAD 在 master 位置
上面的提交历史对照 learngitbranching.js.org 的结构图
使用操作符 “^” 切换到 c3
git checkout bugFix^
# 在 dos 命令中,^是特殊符号,需要加双引号,所以要写成:
git checkout "bugFix^"
在 Terminal 终端中运行命令
现在,HEAD 在 bugFix 的上一个提交位置
上面的提交历史对照 learngitbranching.js.org 的结构图
操作符 ~ 和强制移动分支位置
准备提交结构
切换到 master
提交一次
再切换到 bugFix 提交一次
HEAD移动到 master 的上一个提交
git checkout "master^"
bugFix 强制移动到 bugFix^
通过 -f 参数可以强制移动分支的位置
git branch -f bugFix "bugFix^"
bugFix 分支上现在有一个隐藏的提交:“添加打印-2”,看一下它的哈希值
git reflog
上面的提交历史对照 learngitbranching.js.org 的结构图
操作符 ~ 和强制移动分支位置
master 强制移动到隐藏提交上(上一步看到的哈希值)
git branch -f master b6c4
bugFix 强制移动到初始提交
git branch -f bugFix bugFix~3
切换到第二次提交
git checkout "HEAD^"
上面的提交历史对照 learngitbranching.js.org 的结构图
reset 和 revert
准备提交结构
master 重置到第二次提交,删除 bugFix 分支
新建 pushed 分支,并提交一次
重新切换到master,再新建 local 分支并执行一次提交
上面的提交历史对照 learngitbranching.js.org 的结构图
用 reset 撤销提交
重置 local 分支到上一个提交
git reset local^
# dos中要加双引号
git reset "local^"
local 的提交被撤销了
用 revert 撤销提交
先切换到 pushed 分支,然后用 revert 撤销pushed分支的变更
revert 会在当前分支上前进一步,生成的新的提交
新生成的提交与“添加打印2”的提交相同,相当于把“添加打印3”撤销了
上面的提交历史对照 learngitbranching.js.org 的结构图