目录

一、高级话题篇

1.多分支rebase

2.选择父提交记录

3.纠缠不清的分支


 Git的一些技术、技巧与贴士集合在上一篇文章中 Learn Git Branching 学习笔记(Git 技术、技巧与贴士集合篇)_流年--by gone的博客-CSDN博客

这篇文章主要介绍git的一些高级话题。

一、高级话题篇

1.多分支rebase

       这里有很多分支,将分支rebase到main上吧。但是希望得到有序的提交历史,也就是最终的结果应该该是C6'在C7'上面,C5'在C6'上面,依次类推。用reset命令可以重新开始。

题目:

a87c0cbb8d79ff8225cb136efb7eeff1.png

答案:

git rebase main bugFix
git rebase bugFix side
git rebase side another
git rebase another main

2.选择父提交记录

       操作符 ^ 与 ~ 符一样,后面也可以跟一个数字。但是该操作符后面的数字与 ~ 后面的不同,并不是用来指定向上返回几代,而是指定合并提交记录的某个父提交。还记得前面提到过的一个合并提交有两个父提交吧,所以遇到这样的节点时该选择哪条路径就不是很清晰了。Git 默认选择合并提交的“第一个”父提交,在操作符 ^ 后跟一个数字可以改变这一默认行为。

       这里有一个合并提交记录。如果不加数字修改符直接检出main^,会回到第一个父提交记录。(在我们的图示中,第一个父提交记录是指合并提交记录正上方的那个提交记录)

     输入git checkout main^

现在试试选择另一个父提交。

    输入git checkout main^2

使用^和~可以自由地在提交树上移动,比如:

 git checkout HEAD~
 git checkout HEAD^2
 git checkout HEAD~2

操作符还支持链式操作比如:

 git checkout HEAD~^2~2这和前面的结果一样,但只用了一条命令

题目:

       要完成此关,在指定的目标位置创建一个新的分支。

       很明显可以简单地直接使用提交记录的哈希值(比如C6),但要求使用刚刚讲到的相对引用修饰符。

d0ee452486d4e9509bcf9766386186ea.png

  答案:

git branch bugWork main^^2^ //在那个地方创建分支

3.纠缠不清的分支

题目:

       现在我们的 main 分支是比 one、two 和 three 要多几个提交。出于某种原因,我们需要把 master 分支上最近的几次提交做不同的调整后,分别添加到各个的分支上。one 需要重新排序并删除 C5,two 仅需要重排排序,three 只需要提交一次。

       通关之后用 show solution 看看我们的答案哦。

答案:

git checkout one
git cherry-pick C4 C3 C2
git checkout two
git cherry-pick C5 C4 C3 C2
git branch -f three C2  //不用merge,而是用强制指向即可

Git 高级话题篇完结撒花~

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐