【发布时间】:2018-05-05 00:23:31
【问题描述】:
我正在尝试通过命令行获取一些关于一些 git 提交的信息,作为我正在构建的一个更大的自动化工具的一部分。我想要的信息可以通过这个 git log 命令获得:
git log --branches --graph --oneline --parents
产生这个输出:
这很棒,因为它有我想要的哈希和标签,以及提交消息。但是,当我将其通过管道传输到文件时,括号中的内容似乎以某种方式丢失了。我对颜色不太感兴趣,但我只想要纯文本,就像我对任何类似 *nix 的程序所期望的那样。
这是我似乎得到的输出,它省略了一些我想要的输出(例如,标签信息):
我不确定这些信息在通过管道传输到某个地方时如何或为什么会丢失。我觉得这可能是非常简单和明显的事情。
无论我是在 Arch Linux 上的 Bash(使用最新版本的 git)还是在 Windows 的 MINGW64 Bash 环境中执行此操作,我都会遇到同样的问题。
问题:如何在不丢失管道到文件时丢失的信息的情况下完全捕获 git log 的输出?
【问题讨论】:
-
重定向标准错误:
2>&1 -
为什么上面的评论实际上不是问题的解决方案,即使是最小的测试也证明了这一点并得到了文档的证实?
-
git在检测到其标准输出不是终端时可能表现不同。但是,还有其他事情正在发生,因为您不应该在命令中没有--decorate选项的情况下获得该输出。 -
@chepner - “别的东西”就像将
log.decorate配置值设置为auto一样简单
标签: bash command-line-interface git pipe stdout