如何包装git commit注释?

Dav*_*vid 69 git

有没有办法包装git提交注释(通过查看时git log),所以它们不会在行尾被截断?似乎应该有一个非常简单的解决方案,但我找不到一个.

谢谢.

Rob*_*ert 52

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

$ git config --global core.pager 'less -R'
Run Code Online (Sandbox Code Playgroud)

这样可以减少停止尝试控制屏幕格式的方式(通常可以在git log使用箭头键的过程中左右滚动).正如较少的手册所说"因此,可能会导致各种显示问题,例如长线在错误的位置被分开." 你想要的是什么,你希望行结尾出现在你的屏幕右边(错误的地方)而不是评论作者所说的位置.

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

  • +1"你可以使用箭头键左右滚动" - 谢谢! (11认同)
  • 打开你的`〜/ .gitconfig`文件并删除`[core] pager = ...`部分 (3认同)

Von*_*onC 34

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


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

根据这篇博客,由于git log没有进行任何类型的包装,您需要使用适当的行长度来设置注释的格式

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

正如在这里说:

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

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

所有来源(包括GitPro书,这也适用于50个字符的第一线,为约尔格W¯¯米塔格评论)坚持有必要换自己的评论,肯定是因为,即使Git的是能够处理排长队,在其他工具处理链(电子邮件,补丁,......)可能不会.

  • 这是学习Vim的一个更好的借口; 当设置为Git提交消息的编辑器时,Vim将仅突出显示第一行的前50个字符,将红色标记为第二行中的任何字符,并将自动包含72个字符的后续行. (9认同)

Car*_*arl 19

似乎没有任何完美的方式.我使用的解决方法只是将输出传递给more(或less,或cat等):

git log | more
Run Code Online (Sandbox Code Playgroud)

这包括至少在我的系统上的长行(但是,你错过了颜色格式).


wal*_*ldo 17

在前面的答案中提到的是默认的寻呼机(通常是"较少")负责包装,默认情况下它通常会切断长线.

要修改它而不更改提交消息(less和bash示例):

$ echo $LESS
-FRSX
Run Code Online (Sandbox Code Playgroud)

这是我默认拥有的,现在覆盖LESS环境变量.

echo "LESS=-FRX;export LESS" >> ~/.bash_profile
source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

  • 小心!`回声 "LESS = -FRX;出口LESS">〜/ .bash_profile`将取代`〜/ .bash_profile`使用 ">>" 的内容,而不是:`回声 "LESS = -FRX;导出LESS" >>〜/ .bash_profile` (7认同)

Mat*_*aun 14

请注意,较少的-r(如上所述)导致较少忘记其行数并且您错过了提交,因为您的最顶部的行将滚动出视线!真正的修复是禁用-S选项,如果未设置LESS环境变量,则默认启用git.

一个很好的解决方法是通过以下方式更改您的git配置:

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


ale*_*xei 12

至少在git版本1.7.9.5中,git log确实支持换行.从git帮助日志:

 PRETTY FORMATS
   %w([<w>[,<i1>[,<i2>]]]): switch line wrapping
Run Code Online (Sandbox Code Playgroud)

因此,例如,以下内容包含72列的长主题:

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

(同意应遵循提交格式约定而不是依赖于此.但是,在每个人都知道并尊重约定的那一天,这可能会有用.)