Git闯关游戏:Learn Git Branching Level 2-3 相对引用2(~)
- 可以到这里下载安装
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
转载自:https://juejin.cn/post/7127486215418281992