Git log - 使用glob模式分支多个分支

时间:2017-02-21 19:04:11

标签: git git-extensions

我无法让git log --branches做我想做的事。我想在单个图中输出提交匹配这些glob模式:

  • users/userA/*
  • fix/*
  • master

我尝试了这些不起作用的方法(它们显示当前分支的提交):

  • git log --branches="users/bertgp/* /users/sessid/* master"
  • git log --branches="users/bertgp/*|/users/sessid/*|master"(类似于正则表达式的语法)

这可能吗?似乎glob模式没有or语法。

为什么我要这样做

我使用Git Extensions作为我的可视git客户端,使用branch filter box appends its content to a (single) --branches= option作为git log命令。

我打开了Git Extensions feature request来支持此功能。

2 个答案:

答案 0 :(得分:1)

您可以多次重复--branches选项:

git log --branches="users/bertgp/*" --branches="/users/sessid/*"

在bash中,可以利用大括号扩展来压缩它,

git log --branches={"users/bertgp/*","/users/sessid/*"}

但是,最有可能的是,这些原始问题的答案都不适用于Git Extensions。

答案 1 :(得分:1)

这可以在Git Extensions 2.49中找到(不检查早期版本)。虽然很麻烦......

实际上,分支过滤器中的文本按原样插入到git命令行中(或以--branches=为前缀),而没有转义或类似的东西。这意味着您可以添加任意git选项。

以下是您应该知道的事情:

  1. 如果分支过滤器包含全局符号,则GitExt会以--branches=为前缀
  2. git不接受多个日志分支,因此您应该为每个分支使用--branches
  3. 应使用
  4. 远程分支--remotes
  5. 如果使用了分支而没有全局,那么git会自动将/*添加到分支的末尾,因此您无法使用--branches=master,而应该使用--branches=maste[r]伪造
  6. 一些例子:

    1. users/berniegp/* --branches=maste[r]
    2. 应该做你要求的。它将由GitExt转换为--branches=users/berniegp/* --branches=maste[r]

      1. users/berniegp/* --branches=maste[r] --remotes=origin/users/berniegp/*
      2. 还显示远程跟踪分支(origin / users / berniegp / *)

        1. --reflog
        2. 显示还提交来自reflog的引用。可能对查找“丢失”提交有用吗?

          1. --bisect
          2. 应该(我实际上没有尝试)显示引入问题的提交范围(好与坏之间)

            1. --reverse
            2. 以相反的顺序显示提交。

              git loghttps://git-scm.com/docs/git-log

              的其他选项