【学习笔记】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(快速合并),此时两个分支指向统一节点。
但实际情况中,往往遇到的是下图中的情况。这种就不能直接合并了,在ft-2 …