• 能够到这儿下载安装Git: git-scm.com/download/wi…
  • Learn Git Branching游戏在这儿:learngitbranching.js.org/?locale=zh_…

Level 2-3 《相对引证2(~)》

Git闯关游戏:Learn Git Branching Level 2-3 相对引用2(~)

游戏答案:

# 将main移动到c6提交
git branch -f main c6

# 切换到HEAD的上一个提交
git checkout HEAD^1

# bugFix撤退三个提交
git branch -f bugFix bugFix~3

预备试验环境

# 预备一个空目录
mkdir level-2-3
cd level-2-3

# 初始化本地仓库
git init

# 在master分支做两次提交
echo 111>>a.txt
git add .
git commit -m "c0"
echo 222>>a.txt
git add .
git commit -m "c1"

# 创立bugFix分支但不切换到这个分支
git branch bugFix

# 持续在master分支再做一次提交
echo 333>>a.txt
git add .
git commit -m "c2"

# 切换到bugFix分支
git checkout bugFix

# 在bugFix分支做一次提交
echo 444>>a.txt
git add .
git commit -m "c3"

# 然后切换到master
git checkout master

# 在master分支再做一次提交
echo 555>>a.txt
git add .
git commit -m "c4"

# 切换到bugFix分支
git checkout bugFix

# 在bugFix分支持续提交两次
echo 666>>a.txt
git add .
git commit -m "c5"
echo 777>>a.txt
git add .
git commit -m "c6"

# 切换到master的上一个分支,这时HEAD会变成别离状况
git checkout "master^1"

# bugFix分支撤退一个提交
git branch -f bugFix "bugFix^1"

# 检查提交树
git log --graph --pretty=oneline --all

Git闯关游戏:Learn Git Branching Level 2-3 相对引用2(~)

bugFix分支被强制向撤退了一步,使用git log现已检查不到信息为c6的提交记录,能够使用reflog来检查。reflog记录了一切提交的更改时间记录。

git reflog --all

Git闯关游戏:Learn Git Branching Level 2-3 相对引用2(~)

记下这个提交记录的ID,后面我们会用到!

真实答案:

# master移动到c6提交
# 这儿要用到之前 reflog 检查的ID
git branch -f master 4faa

# 切换到HEAD的上一个提交
git checkout "HEAD^1"

# bugFix撤退3个提交
git branch -f bugFix "bugFix~3"

# 检查提交树
git log --graph --pretty=oneline --all

Git闯关游戏:Learn Git Branching Level 2-3 相对引用2(~)