有没有办法包装git提交注释(通过git log
查看时),所以它们不会在行尾被截断?似乎应该有一个非常简单的解决方案,但我找不到一个。
感谢。
答案 0 :(得分:52)
或者您可以更改寻呼机以使用less -R
$ git config --global core.pager 'less -R'
这样可以减少停止尝试控制屏幕格式的方式(通常可以使用箭头键在git log
期间左右滚动)。并且正如较少的手册所说“因此,可能会导致各种显示问题,例如长线在错误的位置被分开。”你想要的是什么,你希望行结尾显示在屏幕右侧(错误的地方),而不是评论作者所说的位置。
另外需要注意的是,在不修改寻呼机的情况下按向右箭头键,可以让您看到更多代码。这是我的首选方法。
答案 1 :(得分:33)
编辑2011:other answers(upvoted)突出显示修改git使用的默认寻呼机less的可能性。 我的答案结尾处的评论仍然存在:即使您可以看到长提交消息,这并不意味着必须处理所述(长)消息的其他工具将能够处理它们。
关于提交邮件格式政策的原始答案(2010年1月):
根据this blog,由于git log不进行任何包装,您需要使用适当的行长度格式化注释
git log
不会对提交消息进行任何特殊的特殊包装 使用less -S
的默认寻呼机,这意味着您的段落远离屏幕边缘,使其难以阅读。
在80列终端上,如果我们在左侧减去4列用于缩进,而在右侧减去4列用于对称,我们剩下72列。git format-patch --stdout
使用邮件正文的消息将一系列提交转换为一系列电子邮件。
良好的电子邮件礼节规定我们包装我们的纯文本电子邮件,以便在80列终端中有几个级别的嵌套回复指示符没有溢出的空间。
作为said here:
通常,使用编辑器创建提交消息,而不是在命令行上传递它们。格式应为:
- 72个字符的硬包裹
- 提交的简短摘要
- 后跟一个空行
- 其次是支持细节
所有来源(包括GitPro book,第一行为50个字符,为Jörg W Mittag条评论)坚持必须自己包装评论,当然因为,即使Git能够处理长线,处理链中的其他工具(电子邮件,补丁,......)可能不会。
答案 2 :(得分:19)
似乎没有任何完美的方式。我使用的解决方法只是将输出传递给more
(或less
或cat
等):
git log | more
至少在我的系统上包装了长行(但是,你错过了颜色格式化)。
答案 3 :(得分:17)
在上一个答案中提到的是默认的寻呼机(通常是'较少')负责包装,默认情况下它通常会切断长线。
要修改它而不更改提交消息(less和bash示例):
$ echo $LESS
-FRSX
这是我默认使用的,现在覆盖LESS环境变量。
echo "LESS=-FRX;export LESS" >> ~/.bash_profile
source ~/.bash_profile
答案 4 :(得分:14)
请注意,较少的-r(如上所述)可以减少对行数的遗忘,并且您会错过提交,因为您的最上面的行会滚动到视线之外!真正的修复是禁用-S选项,如果未设置LESS环境变量,git默认启用该选项。
一个好的解决方法是以下列方式更改你的git配置:
git config --global core.pager 'less -+S'
答案 5 :(得分:12)
至少在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"'
(同意应该遵循提交格式约定而不是依赖于此。但是,在每个人都知道并遵守约定的那一天,这可能会有用。)
答案 6 :(得分:4)
这对我有所帮助。
git --no-pager log WhateverBranch | head -n40
通常分支很大,因此,将它连接到头部并使用-n开关可以只获取所需的最近40行(或多行)输出,并且它应该换行(无需滚动)。请注意,此方法也缺少颜色格式。
答案 7 :(得分:2)
正如VonC所提到的,你可能希望将你的提交消息包装成72个字符并一举杀掉许多鸟。这个git钩子自动包装你的提交消息,并与任何编辑器一起使用:https://github.com/surabhigupta/AutoWrapSeventyTwo
答案 8 :(得分:2)
使用这种格式让我的生活更加幸福:
log --pretty=format:\"%w(80,1,41)%h - %an, %ar : %s\"
由于提交消息之前输出中的字段对于我的大多数提交总共大约39个字符,因此它使阅读变得更容易。
答案 9 :(得分:1)
个人建议很简单。如果你想在较少的寻呼机中看到完整的行,只需输入-S,如果你希望以那种方式查看一个部分,这将改为折叠线或后面。
答案 10 :(得分:1)
所以我一直在寻找类似问题的解决方案,并遇到了这个问题。在我的情况下,我正在运行git show,我有2行,其中更改在一个单词中,朝向非常长的行的末尾。我最后使用--word-diff-regex选项以类似的方式解决了这个问题。
git show --color --word-diff-regex="[^[:space:],]+" 55de9c954d5d74a185879d3441a69cc1889c00f1 |more
答案 11 :(得分:1)
对于那些仍在寻找答案的人来说,这就是我为包装git日志消息而解决的问题:
git log --pretty=format:"@%H,%cn,%cD,%B" <file name> | tr "\n" " "|tr "@" "\n"
git log命令的输出是管道,它找到换行符并替换为空格。这是用于将提交消息作为单行连接的逻辑。
在这里,我使用“@”作为分隔符来区分提交。您可以使用您想要的任何特殊符号替换它。 “%H”表示提交哈希,“%cn”表示提交者名称,“%cD”表示提交日期,“%B”表示原始正文消息。如果您想了解有关pretty = format的更多信息,请查看https://git-scm.com/docs/pretty-formats
请注意,如果您在git commit message中有换行符,则可能无效。
答案 12 :(得分:1)
简短的回答:
查看git日志时键入-S
然后输入。
详细答案:
使用git log
文本查看器输出less
,只需输入-S
然后输入即可在“Chop long lines”和“Chop long lines”的两种换行模式之间切换折叠长队。“ “折叠长行”选项可启用自动换行。
帮助我了解这一点的来源:https://superuser.com/a/272826/425838
答案 13 :(得分:0)
如果nano是您首选的编辑器,那么您可以设置git以使用nano自动包装,例如: 72个字符:
git config --global core.editor "nano -r 72"
答案 14 :(得分:0)