git commit添加2行

时间:2018-10-13 11:30:16

标签: node.js git githooks

我正在Windows上用nodeJS编写提交后钩子脚本。以下代码调用最后的提交消息:

#!/bin/env node

require('child_process').exec('git log -1 --pretty=%B', function(err, commit) {
    console.log(commit); // prints message in command prompt with 2 empty lines  
    var messages = commit.split(' '); // the delimiter is irrelevant
    console.log(messages); // prints the array and shows '\n\n' at the end of last element
    console.log(messages[messages.length - 1]); // yet this prints the last element WITHOUT '\n\n'
});

为什么有2条新线?我读了Unix和非Unix系统如何处理CR和LF。 git config core.autocrlf也有一点,但我认为这不是问题。

1 个答案:

答案 0 :(得分:3)

第一个换行符由您的格式--pretty=%B生成。默认情况下,Git使用tformat进行格式化,该格式使用终结符语法(与称为format的分隔符语法相反)。您可以使用--pretty=format:%B来避免换行,并考虑man git-log以获得更多详细信息。

第二个换行符由Unix世界中几乎所有(默认)命令产生。您可以使用以下方法之一删除换行符:How to remove all line breaks from a string?