如何让git log仅显示指定提交范围的直接路径提交?
如何只查看Git中指定起点到终点路径上的提交
假设你的feature分支历史中合并了另一个dependency分支,提交历史如下:
* e821b45 - (HEAD -> feature) feature commit (1 second ago) <Brendan Jackman> * c5b9ab7 - Merge branch 'dependency' into feature (4 seconds ago) <Brendan Jackman> |\ | * 0296ba0 - (dependency) dependency commit (22 seconds ago) <Brendan Jackman> | * d332c6c - dependency commit (23 seconds ago) <Brendan Jackman> | * 5844b6b - dependency commit (24 seconds ago) <Brendan Jackman> * | 8bd2613 - feature commit (8 seconds ago) <Brendan Jackman> * | 7e2679c - (tag: base, main) base (58 seconds ago) <Brendan Jackman> |/ * 429c8cf - hello (61 seconds ago) <Brendan Jackman> * eda7b8f - hello (62 seconds ago) <Brendan Jackman>
常规执行git log base..feature会把dependency分支的提交也显示出来,但这些并不是你需要的feature主路径提交:
* e821b45 - (HEAD -> feature) feature commit (2 minutes ago) <Brendan Jackman> * c5b9ab7 - Merge branch 'dependency' into feature (2 minutes ago) <Brendan Jackman> |\ | * 0296ba0 - (dependency) dependency commit (2 minutes ago) <Brendan Jackman> | * d332c6c - dependency commit (2 minutes ago) <Brendan Jackman> | * 5844b6b - dependency commit (2 minutes ago) <Brendan Jackman> * 8bd2613 - feature commit (2 minutes ago) <Brendan Jackman>
要只查看base到feature路径上的提交,使用--first-parent参数:
git log --first-parent base..feature
这个参数会让Git只跟随每个提交的第一个父提交,也就是合并操作时当前分支的那条主线,忽略合并进来的其他分支历史。执行后输出如下:
* e821b45 - (HEAD -> feature) feature commit (2 minutes ago) <Brendan Jackman> * c5b9ab7 - Merge branch 'dependency' into feature (2 minutes ago) <Brendan Jackman> * 8bd2613 - feature commit (2 minutes ago) <Brendan Jackman> * 7e2679c - (tag: base, main) base (58 seconds ago) <Brendan Jackman>
如果连合并提交都不想显示,可以追加--no-merges参数:
git log --first-parent --no-merges base..feature
对应的输出会去掉合并记录:
* e821b45 - (HEAD -> feature) feature commit (2 minutes ago) <Brendan Jackman> * 8bd2613 - feature commit (2 minutes ago) <Brendan Jackman> * 7e2679c - (tag: base, main) base (58 seconds ago) <Brendan Jackman>
内容的提问来源于stack exchange,提问作者Brendan
相关产品推荐
相关产品推荐

