在一个分支模型中,其中一个分支A总是合并到另一个B中,如何列出所有在B中但不在A中的提交,同时忽略所有樱桃挑选的提交和合并?
在这种情况下,它应该列出提交b3,b4。
在Git手册中进行一些研究:
通过
您可以使用以下命令重现此示例:
a1-------b2' -- A
/ \ \
b1--b2--m1--b3--m2--b4 -- B
b2': cherry-picked commit
在这种情况下,它应该列出提交b3,b4。
在Git手册中进行一些研究:
通过
--no-merges
和--cherry-*
选项解决了忽略合并和精选提交的问题。但是--cherry-*
选项使用提交的对称差异(即A...B
)将精选提交匹配在一起。在这个例子中,提交b2不属于其中。 git log --cherry A...B
返回b2,b3,b4
。您可以使用以下命令重现此示例:
mkdir reprod; cd reprod; git init
git check-out -b B
git commit -m "b1" --allow-empty
git commit -m "b2" --allow-empty
git check-out -b A B^{/b1}
git commit -m "a1" --allow-empty
git cherry-pick --allow-empty B^{/b2}
git check-out B
git merge A^{/a1} --no-edit
git commit -m "b3" --allow-empty
git merge A^{/b2} --no-edit
git commit -m "b4" --allow-empty
git log A...B --cherry