IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交

文章目录

  • 说明
  • HEAD分离状态
    • 准备提交结构
    • HEAD分离状态
  • 操作符 ^
  • 操作符 ~ 和强制移动分支位置
    • 准备提交结构
    • 操作符 ~ 和强制移动分支位置
  • reset 和 revert
    • 准备提交结构
    • 用 reset 撤销提交
    • 用 revert 撤销提交




说明

本教程按照 git在线练习 顺序进行,将在线测试的命令操作落地到 IDEA,使用开发工具来实现所有在线练习中的操作。

你可以结合 git在线练习 来学习本教程,先在线学习git命令,再在 IDEA 中实现相同操作。




HEAD分离状态




准备提交结构




切换到 master 并将 master 重置到第二次提交

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第1张图片




删除 bugFix

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第2张图片




新建 bugFix 分支

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第3张图片




切换到 master 并做一次提交

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第4张图片



切换到bugFix,并做一次提交

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第5张图片



对 bugFix 再做一次提交

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第6张图片




上面的提交历史对照 learngitbranching.js.org 的结构图
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第7张图片




HEAD分离状态




用哈希值切换到最后一次提交
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第8张图片




这时,HEAD 和 bufFix 是分离的状态

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第9张图片




上面的提交历史对照 learngitbranching.js.org 的结构图

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第10张图片




操作符 ^




切换到 master

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第11张图片




现在,HEAD 在 master 位置
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第12张图片




上面的提交历史对照 learngitbranching.js.org 的结构图
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第13张图片




使用操作符 “^” 切换到 c3

git checkout bugFix^

# 在 dos 命令中,^是特殊符号,需要加双引号,所以要写成:
git checkout "bugFix^"

在 Terminal 终端中运行命令

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第14张图片




现在,HEAD 在 bugFix 的上一个提交位置

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第15张图片




上面的提交历史对照 learngitbranching.js.org 的结构图
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第16张图片




操作符 ~ 和强制移动分支位置




准备提交结构




切换到 master
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第17张图片



提交一次

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第18张图片



再切换到 bugFix 提交一次

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第19张图片




HEAD移动到 master 的上一个提交

git checkout "master^"

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第20张图片




bugFix 强制移动到 bugFix^
通过 -f 参数可以强制移动分支的位置

git branch -f bugFix "bugFix^"

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第21张图片




bugFix 分支上现在有一个隐藏的提交:“添加打印-2”,看一下它的哈希值

git reflog

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第22张图片




上面的提交历史对照 learngitbranching.js.org 的结构图
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第23张图片



操作符 ~ 和强制移动分支位置




master 强制移动到隐藏提交上(上一步看到的哈希值)

git branch -f master b6c4

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第24张图片




bugFix 强制移动到初始提交

git branch -f bugFix bugFix~3

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第25张图片




切换到第二次提交

git checkout "HEAD^"

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第26张图片




上面的提交历史对照 learngitbranching.js.org 的结构图
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第27张图片




reset 和 revert




准备提交结构




master 重置到第二次提交,删除 bugFix 分支

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第28张图片




新建 pushed 分支,并提交一次
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第29张图片




重新切换到master,再新建 local 分支并执行一次提交

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第30张图片




上面的提交历史对照 learngitbranching.js.org 的结构图
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第31张图片




用 reset 撤销提交




重置 local 分支到上一个提交

git reset local^

# dos中要加双引号
git reset "local^"

local 的提交被撤销了
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第32张图片




用 revert 撤销提交




先切换到 pushed 分支,然后用 revert 撤销pushed分支的变更

IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第33张图片



revert 会在当前分支上前进一步,生成的新的提交
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第34张图片




新生成的提交与“添加打印2”的提交相同,相当于把“添加打印3”撤销了
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第35张图片




上面的提交历史对照 learngitbranching.js.org 的结构图
IDEA Git操作(二)HEAD分离状态、操作符^和~、用reset和revert撤销提交_第36张图片






你可能感兴趣的:(开发工具,git,IDEA)