gpt4 book ai didi

bash - git log 的输出在通过管道传输到文件时丢失了——我错过了什么?

转载 作者:太空狗 更新时间:2023-10-29 13:54:39 25 4
gpt4 key购买 nike

我正在尝试通过命令行获取有关某些 git 提交的一些信息,作为我正在构建的更大的自动化工具的一部分。我想要的信息可以通过这个 git log 命令获得:

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

产生这个输出:

enter image description here

这太棒了,因为它有我想要的散列和标签,以及提交消息。但是,当我将其通过管道传输到文件时,括号中的内容似乎以某种方式丢失了。我对颜色不太感兴趣,但我只想要纯文本,就像我对任何 *nix 类程序所期望的那样。

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

enter image description here

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

无论是在 Arch Linux 上的 Bash(使用最新版本的 git)还是​​在 Windows 的 MINGW64 Bash 环境中,我都遇到了同样的问题。

问题:我如何才能完全捕获 git log 的输出而不丢失在管道传输到文件时丢失的信息?

最佳答案

您需要将 --decorate 选项添加到您的日志命令。将其设置为 --decorate=short--decorate=full

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

类似地,还有配置值和命令选项来控制是否(以及何时)输出颜色代码;所以

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

即使重定向到文件,也会输出标签和颜色。

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

关于bash - git log 的输出在通过管道传输到文件时丢失了——我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47414785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com