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

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



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

image.png



游戏答案:

# 将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
复制代码

image.png

bugFix分支被强制向后退了一步,使用git log已经查看不到信息为c6的提交记录,可以使用reflog来查看。reflog记录了所有提交的更改时间记录。

git reflog --all
复制代码

image.png

记下这个提交记录的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
复制代码

image.png



分类:
开发工具
标签:
收藏成功!
已添加到「」, 点击更改