- 能够到这儿下载安装
Git
: git-scm.com/download/wi…- Learn Git Branching游戏在这儿:learngitbranching.js.org/?locale=zh_…
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
bugFix分支被强制向撤退了一步,使用git log
现已检查不到信息为c6
的提交记录,能够使用reflog
来检查。reflog
记录了一切提交的更改时间记录。
git reflog --all
记下这个提交记录的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