我正在试图找到合并在主分支中的最新分支的名称。除了主分支之外,所有其他分支都是在模式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>我已经在regex在线测试器中测试了以下内容:
(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请帮帮忙。谢谢。
发布于 2021-01-11 17:45:16
与其执行复杂的正则表达式,不如获得输出的最上端行,例如:
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/“之后的所有内容,甚至在”原产地/“之后,您可以使用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}'发布于 2021-01-11 17:34:27
如果您想使用正则表达式,可以使用类似于此(remotes\/origin\/testBranch\/\d\.\d\.\d)的表达式,这将只匹配第一次出现的情况。参考jad的答案,您也可以使用git branch -a --merged master |grep remote|head -1而不是regex。
https://stackoverflow.com/questions/65671357
复制相似问题