错数git提交

时间:2014-12-17 09:52:51

标签: git bash git-merge

我有一个小的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)?

1 个答案:

答案 0 :(得分:8)

这些日志命令的输出使用\n作为分隔符,而不是终结符,因此您的wc -l计数都是一个简短的。你真的有:

1001 = 818 + 183

提交,这加起来。

来自git help log

  

tformat:格式与format:完全相同,但它除外   提供"终结者"语义而不是"分隔符"语义。   换句话说,每个提交都有消息终止符   (通常是换行符)附加,而不是放置分隔符   条目之间。这意味着单线的最终输入   格式将使用新行正确终止,就像   " ONELINE"格式呢。