使用全局模式来查看多个分支的 Git log --branches

3
我无法让git log --branches按照我的要求运行。我想在一个单一的图形中输出与以下通配符匹配的提交记录:
  • users/userA/*
  • fix/*
  • master
我尝试了以下方法,但它们都无法正常工作(它们显示当前分支的提交记录):
  • git log --branches="users/bertgp/* /users/sessid/* master"
  • git log --branches="users/bertgp/*|/users/sessid/*|master" (类似于正则表达式的语法)
这是否有可能?似乎通配符没有“或”语法。
我为什么要这样做
我使用Git Extensions作为我的可视化git客户端,并且它的分支过滤框将其内容附加到(单个)--branches=选项,用于其git log命令。
我开了一个Git Extensions功能请求来支持这个。
2个回答

4
你可以多次使用--branches选项:
git log --branches="users/bertgp/*" --branches="/users/sessid/*"

在bash中,可以利用花括号扩展的方式进行压缩,例如:
git log --branches={"users/bertgp/*","/users/sessid/*"}

然而,很可能这两个答案都不能解决你最初的问题,因为与Git扩展不兼容。

这在命令行中可以工作,但它并不适合我的用例(请参见我的编辑)。如果没有其他答案出现,我将接受此答案。 - undefined

2
这在Git Extensions 2.49中是可能的(之前的版本未经检查)。虽然它很麻烦...
实际上,分支过滤器中的文本会被插入到git命令行中,就像原样(或者带有--branches=前缀),而不需要转义或类似的操作。这意味着您可以添加任意的git选项。
以下是您需要知道的内容:
  1. 如果分支过滤器包含通配符,则GitExt会用--branches=作为前缀
  2. git不接受多个分支进行日志记录,因此您应该为每个分支使用--branches
  3. 对于远程分支,应使用--remotes
  4. 如果使用不带通配符的分支,则git会自动将/*添加到分支的末尾,因此您不能使用--branches=master,而应该使用带有假通配符的--branches=maste[r]
以下是一些示例:
  1. users/berniegp/* --branches=maste[r]
应该能够实现您的要求。GitExt会将其转换为--branches=users/berniegp/* --branches=maste[r]
2. 显示远程跟踪分支(origin/users/berniegp/*): users/berniegp/* --branches=maste[r] --remotes=origin/users/berniegp/* 3. 显示引用日志中的引用提交,可能有助于查找“丢失”的提交: --reflog 4. 显示问题出现的提交范围(在好和坏之间),应该会显示(我实际上没有尝试过): --bisect 5. 以相反的顺序显示提交: --reverse 还有其他的git log选项(https://git-scm.com/docs/git-log

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接