Git闯关游戏:Learn Git Branching Level 3-1 Git Cherry-pick
- 可以到这里下载安装
Git
: git-scm.com/download/wi…- Learn Git Branching游戏在这里:learngitbranching.js.org/?locale=zh_…
Level 3-1 《Git Cherry-pick》
这一关使用cherry-pick命令来移动提交,不仅在游戏里学习,你还可以在真实环境中进行实验。
游戏答案:
# 按顺序将c3,c4,c7提交,复制到当前main分支下
git cherry-pick c3 c4 c7
准备实验环境
下面命令完整CV到Windows cmd
命令行窗口中执行:
# 准备一个空目录
mkdir level-3-1
cd level-3-1
# 初始化本地仓库
git init
# 在master分支做两次提交
echo 111>>a.txt
git add .
git commit -m "c0"
echo 222>>a.txt
git add .
git commit -m "c1"
# 创建三个分支,但不切换分支
git branch bugFix
git branch side
git branch another
# 现在切换到bugFix分支做两次提交
git checkout bugFix
echo 333>>a.txt
git add .
git commit -m "c2"
echo 444>>a.txt
git add .
git commit -m "c3"
# 再切换到side分支做两次提交
git checkout side
echo 555>>a.txt
git add .
git commit -m "c4"
echo 666>>a.txt
git add .
git commit -m "c5"
# 然后切换到another分支做两次提交
git checkout another
echo 777>>a.txt
git add .
git commit -m "c6"
echo 888>>a.txt
git add .
git commit -m "c7"
# 切换回到master分支
git checkout master
# 查看提交树
git log --graph --pretty=oneline --all
真实答案:
首先找到提交信息为 c3、c4、c7的三次提交,后面需要使用这三个提交的ID:
git log --graph --pretty=oneline --all
执行cherry-pick
复制三个提交到master
分支:
# 将c3,c4,c7复制到master分支,这里要使用三个提交的ID
git cherry-pick d2fa cf41 ec07
执行后出现提示,这一步只复制了c3
提交,因为有文件冲突,需要解决冲突后才能继续复制c4
和c7
提交。
根据提示,需要手动修正文件后,再添加并提交文件:
# 添加并提交文件
git add .
git commit -m "c3'"
查看仓库状态:
git status
根据提示,cherry-pick
仍然在执行过程中,我们需要执行git cherry-pick --continue
来继续复制c4
提交:
# 继续下一步,复制c4提交
git cherry-pick --continue
与上一步相同,也需要解决冲突(需要先手动修正a.txt
)后才能再继续:
# 修正a.txt文件后,再添加并提交文件:
git add .
git commit -m "c4'"
相同的,再继续复制c7
提交:
git cherry-pick --continue
# 修正文件后,再添加并提交文件:
git add .
git commit -m "c7'"
最后,查看提交记录和提交状态:
git log --graph --pretty=oneline --all
转载自:https://juejin.cn/post/7128600147428114446