正则表达式查找最新的合并分支名称
Regex to find the latest merged branch name
我正在尝试查找合并到 master 分支中的最新分支的名称。除 master 之外的所有其他分支都以 testBranch/<version of release>
模式命名
所以我使用这个命令来获取整个分支列表:
git branch -a --merged master
outputs:
remotes/origin/testBranch/1.2.0
remotes/origin/testBranch/1.1.0
remotes/origin/master
然后正在考虑一个正则表达式来使用 'grep' 获取最新的分支名称。例如:
git branch -r --merged master | grep <pattern>
我已经在正则表达式测试器中在线测试了这个:
(origin\/testBranch\/[0-9]+\.[0-9]+\.[0-9]+){1}
(origin\/testBranch\/[0-9]+\.[0-9]+\.[0-9]+)*?
似乎无法正常工作。在其他一些试验中,我得到了两条线:
remotes/origin/testBranch/1.2.0
remotes/origin/testBranch/1.1.0
我需要的是输出第一次出现的:
remotes/origin/testBranch/<release version>
So in above example, should output:
remotes/origin/testBranch/1.2.0
请帮忙。谢谢。
我建议使用 GNU sort
:
git branch -a --merged master | sort -Vr | head -n 1
输出:
remotes/origin/testBranch/1.2.0
如果您想使用正则表达式,可以使用像这样的表达式 (remotes\/origin\/testBranch\/\d\.\d\.\d)
,它只会匹配第一次出现的地方。参考 jad 的回答,您也可以只使用 git branch -a --merged master |grep remote|head -1
而不是正则表达式。
与其执行复杂的正则表达式,不如获取输出的最上面一行,例如:
git branch -a --merged master | head -1
如果只想获取合并后的远程分支,可以使用 grep https://www.gnu.org/software/grep/manual/grep.html 只提取远程分支:
git branch -a --merged master | grep -i remote | head -1
如果您要从行中提取特定信息,例如“remotes/”之后甚至“origin/”之后的所有内容,您可以使用 awk
或 sed
来删除您不想要的单词,例如:
git branch -a --merged master | grep -i remote | sed 's/remotes\///;s/origin\///' | head -1
或者可能更整洁,使用 awk:
git branch -a --merged master | awk '/remote/ {gsub("(remotes|origin)/",""); print; exit}'
我正在尝试查找合并到 master 分支中的最新分支的名称。除 master 之外的所有其他分支都以 testBranch/<version of release>
所以我使用这个命令来获取整个分支列表:
git branch -a --merged master
outputs:
remotes/origin/testBranch/1.2.0
remotes/origin/testBranch/1.1.0
remotes/origin/master
然后正在考虑一个正则表达式来使用 'grep' 获取最新的分支名称。例如:
git branch -r --merged master | grep <pattern>
我已经在正则表达式测试器中在线测试了这个:
(origin\/testBranch\/[0-9]+\.[0-9]+\.[0-9]+){1}
(origin\/testBranch\/[0-9]+\.[0-9]+\.[0-9]+)*?
似乎无法正常工作。在其他一些试验中,我得到了两条线:
remotes/origin/testBranch/1.2.0
remotes/origin/testBranch/1.1.0
我需要的是输出第一次出现的:
remotes/origin/testBranch/<release version>
So in above example, should output:
remotes/origin/testBranch/1.2.0
请帮忙。谢谢。
我建议使用 GNU sort
:
git branch -a --merged master | sort -Vr | head -n 1
输出:
remotes/origin/testBranch/1.2.0
如果您想使用正则表达式,可以使用像这样的表达式 (remotes\/origin\/testBranch\/\d\.\d\.\d)
,它只会匹配第一次出现的地方。参考 jad 的回答,您也可以只使用 git branch -a --merged master |grep remote|head -1
而不是正则表达式。
与其执行复杂的正则表达式,不如获取输出的最上面一行,例如:
git branch -a --merged master | head -1
如果只想获取合并后的远程分支,可以使用 grep https://www.gnu.org/software/grep/manual/grep.html 只提取远程分支:
git branch -a --merged master | grep -i remote | head -1
如果您要从行中提取特定信息,例如“remotes/”之后甚至“origin/”之后的所有内容,您可以使用 awk
或 sed
来删除您不想要的单词,例如:
git branch -a --merged master | grep -i remote | sed 's/remotes\///;s/origin\///' | head -1
或者可能更整洁,使用 awk:
git branch -a --merged master | awk '/remote/ {gsub("(remotes|origin)/",""); print; exit}'