我在jenkins中安装了git参数插件。有一个从git过滤分支的选项需要一个正则表达式。所以我在我的分支下拉列表中得到的是“origin / master”。所以我需要一个正则表达式,我需要只有单词“master”,并希望从所有分支名称中排除“origin /”。任何帮助?还是建议?
答案 0 :(得分:1)
嗯,这是regexp的事情 - 他们并不完全"排除"事情,他们只匹配(并且该匹配可以选择用于替换)。
因此,您需要更多地考虑分支名称的结构,并了解哪种规则可以最好地描述它。
#[^/]+$#
(#
在这里用作正则表达式分隔符;如果你的系统不支持任意分隔符,则斜杠的等价物是/[^\/]+$/
,它更难读,但工作方式相同)可以是一个选项 - 它将匹配所有内容,直到不包含斜杠的字符串/行的结尾。只要您的分支名称不包含更多斜杠(例如origin/feature/super-cool-stuff
会导致super-cool-stuff
实际上可能期望feature/super-cool-stuff
),此方法就可以正常工作。
换句话说,如果不知道分支命名规则是什么,就没有单一的正确答案。
答案 1 :(得分:0)
如果要从分支名称中排除origin/
,则可以尝试仅搜索本地分支:
git branch | grep master
请注意,git branch
没有选项只搜索本地分支,-r
只搜索远程跟踪分支,-a
搜索所有内容。
答案 2 :(得分:0)
您可以使用strip
option of format:
git for-each-ref --format='%(refname:strip=3)' --shell --no-merged @ refs
# or
git branch -a --format='%(refname:strip=3)'
这样,refs/remotes/origin
不是输出的一部分,你可以在你的远程分支上grep。
关于Jenkins及其在“Branch to Build”中的分支过滤,您可以使用:
^master
仅隔离master
,而不是origin/master
您可以使用negative lookahead as in this answer排除origin
的任何分支:
:^(?!.*origin/).*$