Git快进合并在TIME方面是FORWARD。指针从旧提交到新提交。
示例(通过ffwd合并主指针从提交D移动到提交G):
在快进合并之前:
master
|
A<--B<--B<--D<--E<--F<--G
|
new_branch
快进合并后:
master
|
A<--B<--B<--D<--E<--F<--G
|
new_branch
但是,由于提交指针从较新指向较旧,严格地说这些指针,分支指针在提交指针的上游向后 ...。所以在这个意义上,它可以被标记为快速反向合并。上游(来自ProGit一书的术语,合并章节)指的是反向流动,即上游,因此将上游流程解释为快进事物可能会使新手感到困惑。所以,它是:
提交指针的上游。
转发提交时间。
这种推理有意义吗?
答案 0 :(得分:2)
只有在提交遵循箭头的路径时才会出现这种情况。
我认为这让你感到困惑。请记住,箭头指向你来自的地方,而不是你要去的地方。
主指针随时间向前移动并沿着分支向前移动。请记住,HEAD位于分支的最前端。无论何时你向HEAD移动(假设它没有向后移动)你都会及时前进并提交。
现在,如果你想把它想象成一个链表,那么是的,通常A会是头,而G就是尾巴,除了.....我们知道在Git我们的HEAD指向G除此之外,我不认为新手通常会在这个低级别上看它,并尝试将数据结构概念应用于它。
你在想它。
答案 1 :(得分:0)
不,它不会将master
移动到“G”。它只是以“G”开头,而ff以“D”开头。 master
只是名称/标签的东西(称为ref
)。它在合并后更新,而不是逐步“移动”。
要理解这一点,您可以尝试合并冲突。 当合并正在等待手动解析时,分支仍然指向其旧提交。只有结帐树和索引处于不确定状态。
<强>更新强> 也许你可以用这种方式思考:
git merge-base D G
,这是G master
,覆盖旧分支。