当推送到GitHub时,我正在运行自动化测试。
在设置测试仓库时,我可以运行:
git branch -a --contains <<commit id>>
检测提交可能存在的分支。
Git产生如下输出:
remotes/origin/MEM-5286-partner-video-update01
remotes/origin/MEM-5286-partner-video-update02
有人可以建议使用bash从输出字符串的末尾捕获分支名称(MEM-5286-partner-video-update01
,MEM-5286-partner-video-update02
)的方法吗?
我可以用结果行加载bash数组,但是尝试使用sed和/或regex仅捕获分支名称已陷入困境。似乎没有git选项可以消除remotes / origin前缀。
我希望您对方法有任何想法。
答案 0 :(得分:4)
您可以使用--format
选项,该文档的文档位于for-each-ref
下:
git branch -a --contains <commit_id> --format='%(refname:short)'
refname:short
已在Git 1.6.1中引入。
答案 1 :(得分:1)
使用本地git
。您可以在git-for-each-ref
的联机帮助页中查看可以在此处的--format
选项中使用的原子,但是简而言之,您可以请求refname
(分支的最右边部分)名称)使用:
git branch -a --contains <<commit id>> --format "%(refname:lstrip=-1)"
(可选)使用awk(如果分支名称包含斜杠,则失败):
git branch -a --contains <<commit id>> | awk -F"/" '{print $NF}'
这会将输入行除以"/"
,然后打印最后一个字段print $NF
。