当通过管道传输到文件时,git日志的输出会丢失--我错过了什么? [英] Output from git log gets lost when piped to file - what am I missing?

查看:12
本文介绍了当通过管道传输到文件时,git日志的输出会丢失--我错过了什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过命令行获取一些有关GIT提交的信息,这是我正在构建的一个更大的自动化工具的一部分。我需要的信息可以通过以下git日志命令获得:

git log --branches --graph --oneline --parents

哪一项会产生此输出:

这很好,因为它有我想要的散列和标记,以及提交消息。然而,当我通过管道将其发送到文件中时,括号中的内容似乎不知何故丢失了。我对颜色不太感兴趣,但我只想要纯文本,这是我对任何*nix类程序的期望。

这似乎是我得到的输出,它省略了我想要的一些输出(例如,标签信息):

我不确定这些信息在通过管道传输到某个地方时是如何丢失的,或者为什么会丢失。我觉得这可能是非常简单和显而易见的事情。

无论是在Arch Linux上的Bash(使用最新版本的Git)还是在Windows的MINGW64 Bash环境中执行此操作,我都会遇到相同的问题。

问题:如何在不丢失通过管道传输到文件时丢失的信息的情况下完全捕获git日志的输出?

日志

您需要将--decorate选项添加到推荐答案命令中。设置为--decorate=short--decorate=full

它出现在您的配置中,您可能已将log.decorate设置为auto,这意味着在写入终端时会显示标记等内容(以short形式),但不会显示到管道或其他文件。

同样,还有配置值和命令选项,用于控制是否(以及何时)输出色码;因此

git log --branches --graph --oneline --parents --decorate=short --color=always

即使在重定向到文件时也会输出标记和颜色。

请注意,在编写脚本时,您可能应该在命令行中包含这些选项,而不是假设设置了什么配置值。根据您如何处理输出,log可能是脚本中使用的最佳命令,也可能不是,因为git命令在某种程度上分为供人类使用的命令和用于脚本的命令。

这篇关于当通过管道传输到文件时,git日志的输出会丢失--我错过了什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆