合并A到B是什么意思?

2017年9月14日

Git里我们经常创建分支最后将它们合并,但是合并A到B、合并B到A、把A和B合并在一起,这三种动作的意思相同吗?本文解释这个问题。

设当前分支为B,合并A。如果是快进合并,则A和B会指向同一提交。在可快进的情况下,合并A到B与合并B到A的效果相同。

但是如果不可快进,会产生一个新的合并提交,提交说明为merge a into b。合并提交有两个父提交,第一父提交来自当前分支,即B,第二父提交来自A。然后因为当前分支为B,B指针会移动到新的合并提交上。

搞清楚第一父提交和第二父提交对git svn有用,因为git svn dcommit会抛弃第二父提交,以便获得线性的svn历史。