这个问题已经有了答案:
Custom log format omits newline at end of output
1个答案
我有一个小剧本:
echo "Total commits: "
git log --all --pretty=format:"%h %ad | %s%d [%an]" --date=short | wc -l
echo "Total no-merge commits: "
git log --all --pretty=format:"%h %ad | %s%d [%an]" --date=short --no-merges | wc -l
echo "Total merge commits: "
git log --all --pretty=format:"%h %ad | %s%d [%an]" --date=short --merges | wc -l
我知道代码不是最优的。
我剧本的结果是:
Total commits:
1000
Total no-merge commits:
817
Total merge commits:
182
问题:为什么不合并和合并提交的总和(182+817=999)低于提交总数(1000)?
最佳答案
这些日志命令的输出使用\n
作为分隔符,而不是结束符,因此您的wc -l
计数都很短。你真的有:
1001 = 818 + 183
提交,加起来。
从
git help log
:tformat:
格式的工作方式与format:
完全相同,只是提供“终止符”语义而不是“分隔符”语义。
换句话说,每个提交都有消息终止符字符
(通常是换行)附加,而不是放置分隔符
在条目之间。这意味着最后一行
格式将以新行正确终止,就像
“单行”格式。