我有一个小的bash脚本:
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)?
答案 0 :(得分:8)
这些日志命令的输出使用\n
作为分隔符,而不是终结符,因此您的wc -l
计数都是一个简短的。你真的有:
1001 = 818 + 183
提交,这加起来。
来自git help log
:
tformat:
格式与format:
完全相同,但它除外 提供"终结者"语义而不是"分隔符"语义。 换句话说,每个提交都有消息终止符 (通常是换行符)附加,而不是放置分隔符 条目之间。这意味着单线的最终输入 格式将使用新行正确终止,就像 " ONELINE"格式呢。