git merge-base 不在合并分支上工作
git merge-base not working on merged branch
我试图在合并的分支上使用 git merge-base
命令获取我的分支的祖先。
当我尝试 git merge-base develop branch1
时,它显示 sha YYY 而不是 XXX
* `develop`
|
* merge branch1 into develop
|\
| * `branch1` <- HEAD sha YYY
|/
* sha XXX
当我在未合并的分支上执行相同的命令时一切正常(下图)
* `develop`
|
|
| * `branch1` <- HEAD sha YYY
|/
* sha XXX
我获得此提交 ID 的唯一方法是
git log --oneline --boundary develop...branch1
它向我显示了一个提交列表,但我只需要一个。
那是因为合并后的合并基是YYY
:
* `develop`
|
* merge branch1 into develop
|\
| * `branch1` <- HEAD sha YYY
|/
* sha XXX
是同一张水平绘图的垂直版本:
X---M--D <-- develop
\ /
Y <-- branch1
任何两个提交的合并基础,例如 Y
和 D
,是两个提交可到达的最近的提交。
Y
零步到达自己; D
分两步到达M
然后Y
;所以 Y
是附近的共同祖先。
虽然X
也是一个共同祖先,但显然更远:Y
一步到X
,D
一步到X
分为两步或三步,D-M-X
或 D-M-Y-X
。所以 D
-to-X
不比 D
-to-Y
更远(无论哪种方式,最小路径都是 2 步),但是 Y
-to- Y
明显比 Y
-to-X
.
短
这意味着 Y
是最佳共同祖先,因此是合并基础。
我试图在合并的分支上使用 git merge-base
命令获取我的分支的祖先。
当我尝试 git merge-base develop branch1
时,它显示 sha YYY 而不是 XXX
* `develop`
|
* merge branch1 into develop
|\
| * `branch1` <- HEAD sha YYY
|/
* sha XXX
当我在未合并的分支上执行相同的命令时一切正常(下图)
* `develop`
|
|
| * `branch1` <- HEAD sha YYY
|/
* sha XXX
我获得此提交 ID 的唯一方法是
git log --oneline --boundary develop...branch1
它向我显示了一个提交列表,但我只需要一个。
那是因为合并后的合并基是YYY
:
* `develop`
|
* merge branch1 into develop
|\
| * `branch1` <- HEAD sha YYY
|/
* sha XXX
是同一张水平绘图的垂直版本:
X---M--D <-- develop
\ /
Y <-- branch1
任何两个提交的合并基础,例如 Y
和 D
,是两个提交可到达的最近的提交。
Y
零步到达自己; D
分两步到达M
然后Y
;所以 Y
是附近的共同祖先。
虽然X
也是一个共同祖先,但显然更远:Y
一步到X
,D
一步到X
分为两步或三步,D-M-X
或 D-M-Y-X
。所以 D
-to-X
不比 D
-to-Y
更远(无论哪种方式,最小路径都是 2 步),但是 Y
-to- Y
明显比 Y
-to-X
.
这意味着 Y
是最佳共同祖先,因此是合并基础。