Git log --branches 使用 glob 模式的多个分支
Git log --branches with multiple branches using glob patterns
我无法让 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 as my visual git client and its branch filter box appends its content to a (single) --branches=
option 作为它的 git log
命令。
我开了一个Git Extensions feature request支持这个
您可以多次重复--branches
选项:
git log --branches="users/bertgp/*" --branches="/users/sessid/*"
在bash中可以压缩,利用大括号展开,到
git log --branches={"users/bertgp/*","/users/sessid/*"}
但是,最有可能的是,这些对您原始问题的回答都不适用于 Git 扩展。
这在 Git Extensions 2.49 中是可能的(不检查早期版本)。虽然很麻烦...
实际上,来自分支过滤器的文本按原样插入 git 命令行(或以 --branches=
为前缀),没有转义或类似的东西。这意味着您可以添加任意 git 选项。
以下是您应该知道的接下来的事情:
- 如果分支过滤器包含通配符号,则 GitExt 会为其添加前缀
--branches=
- git不接受超过一个分支的日志,所以你应该为每个分支使用
--branches
- 对于远程分支应该使用
--remotes
- 如果使用不带通配符的分支,则 git 会自动将
/*
添加到分支末尾,因此您不能使用 --branches=master
,而应该使用 --branches=maste[r]
假球
一些例子:
users/berniegp/* --branches=maste[r]
应该按照你的要求去做。它会被GitExt转换为--branches=users/berniegp/* --branches=maste[r]
users/berniegp/* --branches=maste[r] --remotes=origin/users/berniegp/*
同时显示远程跟踪分支(origin/users/berniegp/*)
--reflog
显示还提交来自 reflog 的引用。可能对查找 'lost' 提交有用?
--bisect
应该(我实际上没有尝试)显示引入问题的提交范围(在好与坏之间)
--reverse
以相反的顺序显示提交。
和git log
的其他选项(https://git-scm.com/docs/git-log)
我无法让 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 as my visual git client and its branch filter box appends its content to a (single) --branches=
option 作为它的 git log
命令。
我开了一个Git Extensions feature request支持这个
您可以多次重复--branches
选项:
git log --branches="users/bertgp/*" --branches="/users/sessid/*"
在bash中可以压缩,利用大括号展开,到
git log --branches={"users/bertgp/*","/users/sessid/*"}
但是,最有可能的是,这些对您原始问题的回答都不适用于 Git 扩展。
这在 Git Extensions 2.49 中是可能的(不检查早期版本)。虽然很麻烦...
实际上,来自分支过滤器的文本按原样插入 git 命令行(或以 --branches=
为前缀),没有转义或类似的东西。这意味着您可以添加任意 git 选项。
以下是您应该知道的接下来的事情:
- 如果分支过滤器包含通配符号,则 GitExt 会为其添加前缀
--branches=
- git不接受超过一个分支的日志,所以你应该为每个分支使用
--branches
- 对于远程分支应该使用
--remotes
- 如果使用不带通配符的分支,则 git 会自动将
/*
添加到分支末尾,因此您不能使用--branches=master
,而应该使用--branches=maste[r]
假球
一些例子:
users/berniegp/* --branches=maste[r]
应该按照你的要求去做。它会被GitExt转换为--branches=users/berniegp/* --branches=maste[r]
users/berniegp/* --branches=maste[r] --remotes=origin/users/berniegp/*
同时显示远程跟踪分支(origin/users/berniegp/*)
--reflog
显示还提交来自 reflog 的引用。可能对查找 'lost' 提交有用?
--bisect
应该(我实际上没有尝试)显示引入问题的提交范围(在好与坏之间)
--reverse
以相反的顺序显示提交。
和git log
的其他选项(https://git-scm.com/docs/git-log)