首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找最新合并的分支名称的Regex

查找最新合并的分支名称的Regex
EN

Stack Overflow用户
提问于 2021-01-11 17:03:37
回答 2查看 395关注 0票数 0

我正在试图找到合并在主分支中的最新分支的名称。除了主分支之外,所有其他分支都是在模式testBranch/<version of release>中命名的。

因此,我使用以下命令获取整个分支列表:

代码语言:javascript
复制
git branch -a --merged master
outputs: 
 remotes/origin/testBranch/1.2.0
 remotes/origin/testBranch/1.1.0
 remotes/origin/master

然后正在考虑使用“grep”获取最新的分支名称的正则表达式。例如:

代码语言:javascript
复制
git branch -r --merged master | grep <pattern>

我已经在regex在线测试器中测试了以下内容:

代码语言:javascript
复制
(origin\/testBranch\/[0-9]+\.[0-9]+\.[0-9]+){1}
(origin\/testBranch\/[0-9]+\.[0-9]+\.[0-9]+)*?

似乎不能让它起作用。在另一次审判中,我得到了这两条线:

代码语言:javascript
复制
remotes/origin/testBranch/1.2.0
remotes/origin/testBranch/1.1.0

我需要的是只输出第一次出现以下情况:

代码语言:javascript
复制
remotes/origin/testBranch/<release version>
So in above example, should output: 
remotes/origin/testBranch/1.2.0

请帮帮忙。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-11 17:45:16

与其执行复杂的正则表达式,不如获得输出的最上端行,例如:

代码语言:javascript
复制
git branch -a --merged master | head -1

如果只想获得合并的远程分支,可以使用grep https://www.gnu.org/software/grep/manual/grep.html只提取远程分支:

代码语言:javascript
复制
git branch -a --merged master | grep -i remote | head -1

如果要从行中提取特定信息,例如,在"remotes/“之后的所有内容,甚至在”原产地/“之后,您可以使用awksed来删除您不想要的单词,例如:

代码语言:javascript
复制
git branch -a --merged master | grep -i remote | sed 's/remotes\///;s/origin\///' | head -1

也可能更整洁,用awk:

代码语言:javascript
复制
git branch -a --merged master | awk '/remote/ {gsub("(remotes|origin)/",""); print; exit}'
票数 1
EN

Stack Overflow用户

发布于 2021-01-11 17:34:27

如果您想使用正则表达式,可以使用类似于此(remotes\/origin\/testBranch\/\d\.\d\.\d)的表达式,这将只匹配第一次出现的情况。参考jad的答案,您也可以使用git branch -a --merged master |grep remote|head -1而不是regex。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65671357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档