【问题标题】:How to wrap git commit comments?如何包装 git commit 评论?
【发布时间】:2011-01-08 08:41:52
【问题描述】:

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

谢谢。

【问题讨论】:

标签: git


【解决方案1】:

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

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

这将告诉 less 停止尝试控制屏幕的格式(您通常可以在 git log 期间使用箭头键左右滚动)。正如少手册所说“因此,可能会导致各种显示问题,例如长线被分割到错误的位置。”这就是您想要的,您希望行尾出现在屏幕右侧(错误的位置)而不是评论作者放置的位置。

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

【讨论】:

  • +1 表示“您可以使用箭头键左右滚动” - 谢谢!
  • 我该如何扭转这种情况。它没有做我想要的。
  • 打开您的~/.gitconfig 文件并删除[core] pager = ... 部分
  • This answer 建议使用 -R 而不是 -r。如果您注意到 git log 输出中有一些缺失的行,请尝试一下。
  • less -r 适合我,less -R 不适合(ubuntu 14.04)
【解决方案2】:

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


关于提交消息格式政策的原始答案(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 cmets)都坚持有必要给自己包装评论,当然是因为,即使 Git 能够处理长行,处理链中的其他工具(电子邮件、补丁等)可能不会。

【讨论】:

  • 第一行应该更像50-60:它用作电子邮件的标题,例如,它可以在电子邮件客户端或邮件列表中以作者姓名为前缀软件可能会在列表名称前加上[PATCH] 或类似的标签。
  • @Jörg:是的。我已经更新了我的答案,提到了第一行的长度。
  • 这是学习 Vim 的又一个好借口;当设置为 Git 提交消息的编辑器时,Vim 将仅突出显示第一行的前 50 个字符,将第二行的任何字符标记为红色,并在 72 个字符处自动换行。
  • "git log 不做任何包装":out-of-date?
【解决方案3】:

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

git log | more

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

【讨论】:

  • 通过管道将其发送到cat,完美。
【解决方案4】:

上一个答案中提到的是默认寻呼机(通常是“少”)负责换行,默认情况下它通常会截断长行。

在不更改提交消息的情况下修改它(less 和 bash 示例):

$ echo $LESS
-FRSX

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

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

【讨论】:

  • 小心! echo "LESS=-FRX;export LESS" > ~/.bash_profile 将替换 ~/.bash_profile 的内容使用“>>”代替:echo "LESS=-FRX;export LESS" >> ~/.bash_profile
【解决方案5】:

请注意, less -r (如上所述)会减少忘记其行数,并且您会错过提交,因为您的最上面的行将滚动到视线之外!如果未设置 LESS 环境变量,真正的解决方法是禁用 git 默认启用的 -S 选项。

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

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

【讨论】:

  • 我不知道这意味着什么,但它解决了我的问题,即提交 following 长消息没有显示在下一行,而是继续在同一行作为最后一次提交(与--graph 一起玩havok)(Windows)
【解决方案6】:

至少在 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"'

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

【讨论】:

    【解决方案7】:

    这对我有帮助。

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

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

    【讨论】:

      【解决方案8】:

      正如 VonC 所提到的,您可能希望将您的提交消息包装成 72 个字符并用一块石头杀死许多鸟。这个 git 钩子自动包装你的提交消息并适用于任何编辑器:https://github.com/surabhigupta/AutoWrapSeventyTwo

      【讨论】:

        【解决方案9】:

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

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

        由于对于我的大部分提交,提交消息之前的输出中的字段总计大约 39 个字符,这让阅读变得更加容易。

        【讨论】:

          【解决方案10】:

          个人建议很简单。如果您想在 less 分页器中查看完整的行,只需输入 -S 这将更改为折叠行,如果您希望以这种方式查看部分,则返回。

          【讨论】:

            【解决方案11】:

            所以我一直在寻找与此类似的问题的解决方案,并遇到了这个问题。在我的情况下,我正在运行 git show 并且我有 2 行,其中的变化是一个单词,接近一个非常长的行的末尾。我最终用与 git diff 类似的方法解决了这个问题,使用 --word-diff-regex 选项。

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

            【讨论】:

              【解决方案12】:

              这就是我解决包装 git log 消息的方法,对于那些仍在寻找答案的人:

              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 消息中有换行符,这可能不起作用。

              【讨论】:

                【解决方案13】:

                简短回答:
                查看 git 日志时输入 -S 然后 Enter

                详细解答:
                git log 使用 less 文本查看器输出,因此只需键入 -S 然后 Enter 即可在“Chop long lines”这两种换行模式之间切换”和“折叠长线”。 “折叠长线”选项启用自动换行。

                帮助我了解这一点的来源:https://superuser.com/a/272826/425838

                【讨论】:

                  【解决方案14】:

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

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

                  【讨论】:

                    【解决方案15】:

                    对于那些使用SourceTree 的人,有一个设置(Options > General)会在提交消息中显示一个列指南:

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2011-11-09
                      • 1970-01-01
                      • 2015-11-22
                      • 1970-01-01
                      • 2013-08-28
                      • 1970-01-01
                      相关资源
                      最近更新 更多