如何包装git提交评论?

如何包装git提交评论?,git,Git,有没有一种方法可以包装git提交注释(当通过git日志查看时),这样它们就不会在行尾被截断?看起来应该有一个非常简单的解决方案,但我还没有找到 谢谢。编辑2011:the(向上投票)突出显示了修改选项的可能性,git使用的默认寻呼机。 我在回答末尾的评论仍然有效:即使您可以看到长提交消息,这并不意味着其他必须处理所述(长)消息的工具将能够处理它们 关于提交消息格式策略的原始答复(2010年1月): 根据,由于git日志不进行任何形式的包装,您需要使用适当的行长度格式化注释 git log不会

有没有一种方法可以包装git提交注释(当通过git日志查看时),这样它们就不会在行尾被截断?看起来应该有一个非常简单的解决方案,但我还没有找到

谢谢。

编辑2011:the(向上投票)突出显示了修改选项的可能性,git使用的默认寻呼机。
我在回答末尾的评论仍然有效:即使您可以看到长提交消息,这并不意味着其他必须处理所述(长)消息的工具将能够处理它们


关于提交消息格式策略的原始答复(2010年1月):


根据,由于git日志不进行任何形式的包装,您需要使用适当的行长度格式化注释

  • git log
    不会对提交消息进行任何特殊包装。
    默认分页器为
    less-S
    ,这意味着您的段落远离屏幕边缘,使其难以阅读。
    在一个80列的终端上,如果我们为左边的缩进减去4列,为右边的对称减去4列,那么左边就有72列
  • git格式修补程序--stdout
    使用消息正文的消息将一系列提交转换为一系列电子邮件。
    好的电子邮件网络礼仪要求我们包装我们的纯文本电子邮件,以便在80列终端中有空间容纳几层嵌套的回复指示器,而不会出现溢出
作为:

通常,使用编辑器来创建提交消息,而不是在命令行上传递它们。格式应为:

  • 72个字符的硬换行符
  • 提交的单个简短摘要
  • 后跟一个空行
  • 其次是支持细节


所有来源(包括第一行50个字符的注释)都坚持认为有必要将注释包装起来,这当然是因为,即使Git能够处理长行,处理链中的其他工具(电子邮件、补丁等)也可能无法处理。

前面的答案中提到的默认寻呼机是(通常为“less”)负责包装,默认情况下,它通常会切掉长线

要在不更改提交消息的情况下对此进行修改(less和bash示例):

这是我默认使用的,现在覆盖更少的环境变量

echo "LESS=-FRX;export LESS" >> ~/.bash_profile
source ~/.bash_profile

或者您可以将寻呼机更改为使用
less-R

$ git config --global core.pager 'less -R'
这将告诉less停止尝试控制屏幕的格式化方式(您通常可以使用箭头键在
git log
期间左右滚动)。正如less手册所说,“因此,可能会导致各种显示问题,例如在错误的位置拆分长线。”这正是你想要的,你希望行的结尾出现在屏幕的右边(错误的地方),而不是评论作者放的地方


另外要注意的是,在不修改寻呼机的情况下按右箭头键将让您看到更多的代码。这是我的首选方法。

似乎没有任何完美的方法。我使用的一种解决方法是将输出通过管道传输到
更多
(或
更少
,或
cat
等):


至少在我的系统上,这会包装长行(但是,您会错过颜色格式)。

至少在git版本1.7.9.5中,
git日志
支持行包装。从git帮助日志:

 PRETTY FORMATS
   %w([<w>[,<i1>[,<i2>]]]): switch line wrapping
(同意应该遵循提交格式约定,而不是依赖于此。但是,在每个人都知道并尊重约定的那一天到来之前,这可能会被证明是有用的。)

注意less-r(如上所述)这会导致less忘记其行数,并且您会错过提交,因为最上面的行将滚动到看不见的地方!真正的修复方法是禁用-S选项,如果未设置less环境变量,git默认会启用该选项

一个好的修复方法是通过以下方式更改git配置:

git config --global core.pager 'less -+S' git config--global core.pager'less-+S'这对我很有帮助

git --no-pager log WhateverBranch | head -n40

通常,分支很大,因此,通过管道将其连接到头部并使用-n开关,您可以仅获取所需的最近40行(或任意多行)的输出,并且应该进行换行(无需滚动)。请注意,这种方法还缺少颜色格式。

正如VonC所提到的,您可能希望将提交消息包装为72个字符,一举两得。此git钩子自动包装您的提交消息,并与任何编辑器配合使用:

使用这种格式让我的生活更快乐:

log --pretty=format:\"%w(80,1,41)%h - %an, %ar : %s\"

由于提交消息之前的输出中的字段在我提交的大部分内容中总共约为39个字符,因此阅读起来容易多了。

个人建议很简单。当你想在更少的寻呼机中看到完整的行时,只需键入-S,如果你想以这种方式查看某个部分,这将更改为折叠行或后退。

如果nano是您首选的编辑器,那么您可以将git设置为使用nano并自动换行,例如72个字符:

git config --global core.editor "nano -r 72"
对于使用的用户,有一个设置(Options>General)将在提交消息中显示列指南:


所以我在寻找一个类似问题的解决方案,遇到了这个问题。在我的例子中,我正在运行git show,我有两行代码,其中更改在一个单词中,接近一个很长的行的末尾。我最终用与git diff类似的方法解决了这个问题,使用--word diff regex选项


git show--color--word diff regex=“[^[:space:],]+”55de9c954d5d74a185879d3441a69cc1889c00f1 |更多

这是我解决包装git日志消息的方法,适用于那些仍在寻找答案的人:

git log --pretty=format:"@%H,%cn,%cD,%B" <file name> | tr "\n" " "|tr "@" "\n"
git log--pretty=格式:@%H,%cn,%cD,%B“|tr”\n“|tr”@”\n
git log命令的输出通过管道传输,用于查找换行符和repl
log --pretty=format:\"%w(80,1,41)%h - %an, %ar : %s\"
git config --global core.editor "nano -r 72"
git log --pretty=format:"@%H,%cn,%cD,%B" <file name> | tr "\n" " "|tr "@" "\n"