为了找到两个git分支的共同祖先,需要这样做:
git merge-base branch another_branch好吧。但是..。如果这两个分支已经合并了怎么办?当我在这种情况下使用merge-base时,我得到的提交是合并之前的最新一次提交,我想知道两个分支在“合并之前”产生的共同祖先。
换言之:
Z - A - B - C - D - E - F
\ /
G - H - I HEAD在F.如果我在这里做git merge-base,我得到的提交是I,而我要找的是A,或者是Z.有什么git指令可以找到吗?
发布于 2017-04-30 23:41:21
如果你这样做了
git merge-base C I你得到了你想要的承诺。C和我是什么?它们是合并提交D的父提交。
你明白了吗?
git log --pretty=%P -n 1 D 给你两根线。这两个字符串是您需要的commit C和I。
如果你想一起做,你可以写
git merge-base $(git log --pretty=%P -n 1 MERGE_COMMIT)其中,必须用合并提交D的散列替换MERGE_COMMIT。
编辑:正如@poke所指出的,它更简单
git merge-base MERGE_COMMIT^ MERGE_COMMIT^2 发布于 2019-08-20 08:16:07
我通常需要在我的分支的尖端HEAD和远程主开发分支之间找到祖先,比如origin/dev。以下是我所用的:
git log --reverse --boundary --format=%h HEAD ^origin/dev | head -1它实质上说:
origin/dev一样常见的祖先SHA出现的格式https://stackoverflow.com/questions/43712418
复制相似问题