git 分支運作模式之我見

tag: merge / patch / 上游 / 下游 / 順流 / 逆流

特性: merge strategy

git 的 merge 有多種不同的 strategy 模式,可透過


git merge [-s ] [-X ]

比較常用的有


git merge -s ours # 以我方 branch 為主


git merge -s recursive -X ours # 如遇衝突以我方 branch 為主
git merge -s recursive -X theirs # 如遇衝突以對方 branch 為主

其中, 最重要的是預設模式為


git merge -s recursive

特性: merge base

git 在作 merge 時,除了參考兩方 branch 的 HEAD ,還會參考兩個 branch 的共同 ancestor 。

View post on imgur.com

//s.imgur.com/min/embed.js

以上圖為例,R 是 A,B 分支共同的 ancestor ,也是 A3, B2 的 merge base。

要如何找出 merge base 呢? 除了手算外,也可以下指令找出 merge base:


git merge-base [branch A] [branch B]

特性: git 下不會影響 merge base 的 merge 方式
git 還有其他不會影響 merge base 的 merge 方式,如下:

* git cherry-pick
* git merge

Leave a Reply

Your email address will not be published. Required fields are marked *