如何在Git自定义pretty格式中仅为合并提交添加Merge行?
实现git-log仅为多父提交显式添加Merge行
完全可以实现,利用git-log的条件格式化占位符就能精准控制只在合并提交(拥有多个父提交)时显示Merge: %p%n行。
核心实现逻辑
git的pretty格式支持%?<条件>:<满足条件时输出的内容>?<不满足时输出的内容>语法:
- 条件部分用
%p(提交的父提交短哈希,合并提交会返回多个空格分隔的哈希,普通提交仅返回一个或空) - 当条件为非空且包含多个父哈希时,输出
Merge: %p%n;否则跳过该行
具体命令示例
基础自定义格式示例
如果需要构建包含Merge行、作者、日期、提交信息的格式,命令如下:
git log --pretty='%?%p:Merge: %p%n?%nAuthor: %an <%ae>%nDate: %ad%n%n %B'
- 合并提交会在Author行前显示
Merge: <父哈希1> <父哈希2> - 普通提交直接显示Author行,无多余空行
适配已有自定义格式
假设你原本的自定义格式是:
git log --pretty='Author: %an <%ae>%nDate: %ad%n%n%s'
只需在Author行前插入条件判断语句,修改后:
git log --pretty='%?%p:Merge: %p%n?Author: %an <%ae>%nDate: %ad%n%n%s'
额外说明
- 若需要显示父提交的完整哈希,将
%p替换为%P即可 - 初始提交(无父提交)的
%p为空,不会触发Merge行输出,符合预期
内容的提问来源于stack exchange,提问作者Dan Li
相关产品推荐
相关产品推荐

