【学习笔记】Git各命令的本质,真是通俗易懂啊

本文为学习笔记,并非原创。原文链接,原文发表于2020-11-15

本篇文章写得真的不错,建议全文阅读。这里只记我不熟悉的地方。

commit节点、HEAD和分支

每次commit都会生成一个节点,节点内容是本次及本次之前所有提交的内容。

不管HEAD还是分支,都是对一个commit节点的引用。因为只是引用,所以它们非常轻量。引用+节点是git构成分布式的关键。

HEAD是一个引用,它可以指向任意一个节点。其指向的节点始终为当前工作目录,换句话说就是当前工作目录(也就是你看到的代码)就是HEAD指向的节点

分支也可以视为一个引用,分支指向一个节点时,该节点的内容就是分支的内容。

分支可以存在多个,而HEAD只有一个。

合并

merge

git merge 分支名/节点哈希值   //将指定分支或节点的内容合并至HEAD

如果要合并的内容完全领先于当前分支,如下图中在ft-2上执行git merge ft-1,则会触发fast-foward(快速合并),此时两个分支指向统一节点。

git merge fast-forward

但实际情况中,往往遇到的是下图中的情况。这种就不能直接合并了,在ft-2 …

more ...