gpt4 book ai didi

git - 为什么管道会从 git log 中删除分支名称?

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

当我运行时

> git log --oneline

我得到的输出看起来像这样

abcdef0 (head, branch, origin/branch) comment
0987654 different comment
1234567 (different-branch, origin/branch) third comment

但是一旦我将输出通过管道传递给任何东西(例如 > git log --oneline | cat),分支名称就消失了

abcdef0 comment
0987654 different comment
1234567 third comment

这意味着我不能 grep、添加行号或类似的东西。

(它也缺少颜色和 less 风格的行为,但我今天不关心这两种方式)

这是我可以通过命令行参数重新启用的东西吗?

最佳答案

git log command Git 称之为瓷器。这意味着它是供实际人类使用的,而不是像 git rev-parse 这样的其他 Git 命令。和 git for-each-ref主要或完全用于计算机程序运行。

Porcelain 命令通常是可配置的,并且经常执行诸如颜色或分页输出之类的操作。 git log 也是如此。几个控件是 git config条目:

color.ui = auto
log.decorate = auto

auto 设置是默认设置——您可以将其更改为alwaysnever——告诉 Git:当命令将其输出写入终端,执行此操作,但如果不执行此操作(例如在 git branch | grep ... 中写入管道时),则不要执行此操作。

log.decorate 选项控制(master) 装饰。特定文本是否着色,如果是,使用何种颜色,由相当复杂的选项迷宫控制,这些选项仅开始 color.ui

color.ui 设置为 always 将破坏在管道中运行陶瓷命令的原始脚本,并期望将 color.ui 设置为其默认自动。 Git 自己的脚本都不是这样幼稚的,但您可能正在使用自己的扩展,或者从没有考虑过该问题的人那里获得的扩展,因此在覆盖这些默认值时要小心。

(顺便说一下,注意设置中的 =。这些在 .git/configgit -c color.ui=true 中是必需的log,例如,但在 git config log.decorate auto 中被禁止。它是历史文物和编码当时权宜之计的疯狂大杂烩。)

关于git - 为什么管道会从 git log 中删除分支名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56694961/

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