如何在 Git 别名中包含 --no-pager?

Posted

技术标签:

【中文标题】如何在 Git 别名中包含 --no-pager?【英文标题】:How do I include --no-pager in a Git alias? 【发布时间】:2011-07-02 11:05:52 【问题描述】:

我根据 EdgeCase 的 Git Immersion 教程创建了一个 Git 别名,如下所示:

hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short

但现在它似乎正在分页结果 - 显示结果后终端显示 (END),迫使我点击 Q 继续工作。我读到通过添加--no-pager 标签,您可以禁用此功能;如何将其合并到别名中?最后,在log 之前和之后,我都试过了,但都没有奏效。 Git 抛出一个错误,说它是一个无法识别的参数,或者它改变了环境变量。有什么建议吗?

【问题讨论】:

不过,你真的不想这样做。一旦你开始使用具有大量历史记录的 git 项目,日志将非常长。 【参考方案1】:

注意:对于 Git 2.18(2018 年第二季度),别名可以为 --no-pager 使用更短的选项: “git --no-pager cmd”没有短而甜的单字母选项。现在可以了。

别名现在可以是:

hist = "!git -P log ..."

参见Johannes Sixt (j6t) 的commit 7213c28(2018 年 5 月 3 日)。(由 Junio C Hamano -- gitster -- 合并于 commit c9aac55,2018 年 5 月 23 日)

git:添加-P 作为--no-pager 的短选项

可以将寻呼机“less”配置为使用备用 屏幕来显示内容,例如,通过在 环境。 在此配置下关闭时,会切换回原来的屏幕,所有内容都消失了。

要求输出在 终点站。为此,可以使用选项--no-pager。 但是输入起来有点麻烦,即使命令完成是 可用。 提供一个简短的选项,-P,以使选项更多 易于访问。

【讨论】:

在脚本中我更愿意将其写出来以便于理解。在 CLI 上使用它当然仍然有用。 @Xerus 我同意:脚本不支持,CLI 支持。【参考方案2】:

--no-pager 选项在log 之后使用时会给出unrecognized option 错误,但通过将--no-pager 放在日志之前-“git --no-pager log ....”有效

【讨论】:

部分解决方案很好 - 使用这种方法 git 不会为给定命令使用寻呼机。但是,它会因另外两条消息过早终止... #1 - 错误:警告:由于文件过多,已跳过详尽的重命名检测。 #2 - 警告:您可能希望将 diff.renameLimit 变量设置为至少 3072 并重试该命令。【参考方案3】:

您只需将其转换为 shell 命令即可轻松做到这一点:

hist = "!git --no-pager log ..."

【讨论】:

对不起标题,我的错。不过感谢您的帮助!

以上是关于如何在 Git 别名中包含 --no-pager?的主要内容,如果未能解决你的问题,请参考以下文章

如何在文件中包含php别名

如何在 Python 中从需求安装中包含 git 分支? [复制]

如何在 Jenkins 电子邮件中包含 git changelog?

如何在 GitHub 存储库中包含 Composer

Git命令进阶操作:日志格式化

深入底层学git:目录中包含的秘密