Git Log查询两标签间提交却出现其他标签区间提交的问题咨询
问题分析与解决
问题现象
执行命令:
git log --merges '7.0.8'...'7.0.9' --oneline
查询两个标签间的合并提交时,结果不仅包含7.0.8到7.0.9的提交,还出现了7.0.7到7.0.8区间的合并提交,期望仅获取最后一个提交3f5c081。
原因解释
Git中...和..的范围语义完全不同:
A...B:显示对称差提交,即所有能从A或B到达,但不能从两者共同祖先到达的提交。这意味着它会同时包含A相对于共同祖先的新增提交,以及B相对于共同祖先的新增提交。- 你看到的额外提交,正是
7.0.8相对于7.0.8与7.0.9共同祖先的新增提交,所以被包含在了7.0.8...7.0.9的结果里。
解决方案
要仅获取7.0.8到7.0.9区间内的合并提交,需要使用两点..的范围语法,它表示所有能从B到达但不能从A到达的提交,也就是B相对于A的新增提交:
git log --merges 7.0.8..7.0.9 --oneline
额外验证
可以通过以下命令查看7.0.8和7.0.9的共同祖先,进一步理解范围逻辑:
git merge-base 7.0.8 7.0.9
内容的提问来源于stack exchange,提问作者Goopalo David
相关产品推荐
相关产品推荐

