前言

  • 这是一个陆爻齐跟着 Learn Git Branching 网站学习(复习) Git 的系列记录,会跟着其内容的步伐做学习记录,并结合自身浅薄的知识积累和几乎为零的实践经验做一点点的补充。

    https://learngitbranching.js.org

  • 私以为,该网站比较适合有一点 Git 基础来学习,如果是完全零基础,还是看看 Git 官网教程,在 GitHub 这样的代码托管网站走一遍流程比较好。

  • 注意,由于下面的笔记不可避免地涉及到过关的答案,所以强烈建议,自行体验过网站内容再看本文。

正文-高级话题

只为真正的勇士

  • 说是高级话题,实际上就是一些 Git 版小测,把之前的命令做了一点点的变化

多次 Rebase

两个 Parent 节点

  • 此前没怎么提到 parent 节点这个概念,实际上,一旦在当前的 HEAD 上 commit 一下,现在的节点就是新节点的 parent 节点。

  • 而出现两个 parent 节点的情况,就是 merge 命令执行后的交点部分。

  • 现在回想下之前学过的相对引用(【一起来学 Git】LearnGitBranching-高级篇【Learn Git Together】,比如命令git checkout HEAD^这样的命令会在两个 parent 节点中如何选择呢?

  • 答案是,他会自动选择比较早的节点,不过通过命令git checkout HEAD^2可以选择到第二早的节点,^后面的参数不是对几个节点操作的含义(要与~有所区分)而是选择第几个 parent 节点的意思。

  • 此外,相对引用支持链式操作,比如本题答案就可以用下面这一条命令来结束git branch -f bugWork HEAD~^2~

纠缠不清的分支

  • 这一题就是 cherry-pick 和分支移动的简单应用,只可惜 cherry-pick 这个命令只能对 HEAD 指着的地方做操作,不然还会更舒服:)