如果我让Git使用其内置的head
式日志截断,我会得到我期望的结果:
$ git log --color=always --graph -5
* 5abf1e7b0aba45e895bbe5b235f2326ad808ad30 (HEAD -> feature/blahblah, origin/feature/blahblah) blah blah last commit message
* c7b065e3d06ed8066ded283c2feec17e9f5a95d6 whitelist the new field
* 6b4332b951b2b37dec4c0fc67defb778dbdc29d7 add blah blah model
* 323c7570388f13aad8144292ebeb31187eb1c742 add blah blah to the database
* bceae36bda53b48679556eb00ee8321f1c8392e6 (origin/feature/yadayada, feature/yadayada) add blah blah to each blah blah
但如果我使用head
,它会删除分支标记(我想要的!):
$ git log --color=always --graph | head -5
* 5abf1e7b0aba45e895bbe5b235f2326ad808ad30 blah blah last commit message
* c7b065e3d06ed8066ded283c2feec17e9f5a95d6 whitelist the new field
* 6b4332b951b2b37dec4c0fc67defb778dbdc29d7 add blah blah model
* 323c7570388f13aad8144292ebeb31187eb1c742 add blah blah to the database
* bceae36bda53b48679556eb00ee8321f1c8392e6 add blah blah to each blah blah
当我将git-log
的输出传输到另一个工具时,如何避免丢失这些分支标记?
(我正在尝试将输出管道输出到fzf
,为了按照我想要的方式处理输出,需要将其反转,但Git不允许--graph
和{{1要一起使用,所以我必须使用像--reverse
这样的外部实用程序(在macOS上实际为tac
)来反转输出,这会导致我丢失分支标记,这是三个主要原因之一我正在编写自己的函数,而不是使用gtac
示例here。)
答案 0 :(得分:3)
你具体指的是(HEAD -> feature/foo)
装饰品,它们有时会出现,有时候不会,不知何故神奇地自动检测你是否通过一些管道输出git log
其他计划。
这些装饰是在各种标志的控制下添加的,如the git log
manual page:
- 装饰[=短|满|自动|没有]
打印出所显示的任何提交的引用名称。如果指定 short ,则引用名称前缀 refs / heads / , refs / tags / 和 refs / remotes / 不会打印。如果指定了 full ,则将打印完整的引用名称(包括前缀)。 如果 auto 被指定,那么如果输出转到终端,则ref名称显示为 short ,否则没有引用名称显示。默认选项是 short 。
(这里的粗体是我的。)
较早版本的Git并不那么花哨,而某些旧版本默认为no
而不是auto
或short
,但该选项已存在很长时间。此外,您可以在每个用户git config --global
设置中配置自己的默认设置。你可能有一个默认为auto
的Git版本(这是我的赌注)或者已将你的设置配置为auto
。