如何包装git提交评论?

有没有办法包装git commit的评论(当通过git log查看),所以他们没有被截断在行的末尾? 似乎应该有一个非常简单的解决scheme,但我一直没能find一个。

谢谢。

编辑2011: 其他 答案 (upvoted)突出显示的可能性, 更less的选项,git使用的默认寻呼机。
在我的答案结尾的评论仍然是:即使你可以看到长的提交信息,这并不意味着其他工具必须处理(长)的信息将能够处理它们。


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

根据这个博客 ,由于git日志不做任何forms的包装,你需要格式化您的评论适当的行长度

  • git log不会做任何特殊的提交消息的特殊包装。
    使用less -S的默认寻呼机less -S ,这意味着您的段落远离屏幕的边缘,使他们难以阅读。
    在一个80列的terminal上,如果我们在左边减去4列,在右边减去4列,我们剩下72列。
  • git format-patch --stdout将一系列提交转换为一系列电子邮件,使用消息正文的消息。
    良好的电子邮件networking礼仪规定我们包装我们的纯文本电子邮件,以便在80列terminal中有几层嵌套的回复指示符而不会溢出。

如这里所说 :

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

  • 72个字符的硬包装
  • 一个简短的提交摘要
  • 接着是一个空白行
  • 其次是配套细节

所有的资源(包括GitPro的书 ,第一行50个字符, JörgW Mittag评论)坚持有必要包装自己的评论,当然,因为,即使Git能够处理长行,其他工具处理链(电子邮件,补丁,…)可能不会。

或者你可以改变你的寻呼机使用less -R

 $ git config --global core.pager 'less -R' 

这将告诉更less的停止尝试控制如何格式化屏幕(通常可以在使用箭头键的git log期间左右滚动)。 正如手册中所说的那样:“因此,可能会导致各种显示问题,如长线被错误地分割。 这是你想要的,你希望行结束出现在你的屏幕的右侧(错误的地方),而不是评论作者所说的地方。

另外要注意的是,按下右箭头键而不修改你的寻呼机,可以让你看到更多的代码。 这是我首选的方法。

在前面的答案中提到的是,默认的寻呼机(通常是“less”)负责包装,默认情况下,它通常排长队。

要修改这个而不改变你的提交消息(less和bash例子):

 $ echo $LESS -FRSX 

这是我默认的,现在覆盖LESS环境variables。

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

似乎没有任何完美的方法。 我使用的解决方法是将输出pipe道more (或less ,或cat等):

 git log | more 

至less在我的系统上包装了长线(但是,你错过了颜色格式)。

至less在git 1.7.9.5版本中, git log支持换行。 从git帮助日志:

  PRETTY FORMATS %w([<w>[,<i1>[,<i2>]]]): switch line wrapping 

所以,举例来说,以下是72个专栏的长篇主题:

 alias gl='git log --format="%C(yellow)%h %an %ad%C(reset)%n%w(72,1,2)%s"' 

(一致认为应该遵循格式约定,而不是依靠这个约定,但是,直到有一天每个人都知道并尊重约定的时候,这可能是有用的。)

请注意,较less的-r(如上所推荐的)导致更less的遗忘其行数,并且错过了提交,因为最上面的行将滚动到视线之外! 真正的修复是禁用-S选项,git默认启用,如果没有设置LESS环境variables。

一个很好的解决办法是以下面的方式改变你的gitconfiguration:

  git config --global core.pager'less  -  + S' 

这帮助了我。

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

通常情况下,分支很大,因此,将它压入头部并使用-n开关可以只抓取最近需要的40行(或多行)的输出,并且应该换行(无需滚动)。 请注意,这种方法也缺乏颜色格式。

正如VonC所提到的,你可能想把你的提交信息包装成72个字符,并且杀死许多鸟类。 这个git钩子自动包装你的提交信息,并且可以和任何编辑器一起使用: https : //github.com/surabhigupta/AutoWrapSeventyTwo

使用这种格式让我的生活更幸福:

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

由于提交消息之前的输出中的字段对于我的大部分提交总计约为39个字符,因此读取操作更容易。

个人build议很简单。 当你想在较less的寻呼机上看到完整的行时,只需键入-S,如果你想以这种方式查看一个段,这将变成折叠行或返回。

所以我正在寻找一个类似的问题的解决scheme,并遇到了这个问题。 在我的情况下,我正在运行git show,而且我有两行,其中的变化是在一个单词中,在一个很长的行结束。 我用类似的方法解决了这个问题,使用–word-diff-regex选项来处理git diff。

git show --color --word-diff-regex="[^[:space:],]+" 55de9c954d5d74a185879d3441a69cc1889c00f1 |more

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

 git config --global core.editor "nano -r 72" 

对于那些使用SourceTree的人来说 ,有一个设置( Options> General ),它会在提交信息中显示一个列向导:

在SourceTree中提交指导设置

提交指南的例子