首页 > 解决方案 > 如何用关键字过滤分支名称?

问题描述

我正在使用此逻辑,并且需要与此字符串“AMAZONFIX”匹配的唯一分支名称。

git for-each-ref --format='%(committerdate:short) %(authordate:relative) %(refname:lstrip=3)' --sort -committerdate refs/remotes/$REMOTE_NAME | while read date branch; do
printf "%s | %s %s %s %s %s | %50s\n" $date $branch

输出结果:

feature/core-xyz
dummy/AMAZON-bitMap
bugfix/AMAZONFIX-work
main/outlet-file

例外输出:

dummy/AMAZONFIX-bitMap
bugfix/work-place-AMAZONFIX

只有具有“AMAZONFIX”的分支名称

标签: gitgit-branchgit-bash

解决方案


如果您不想使用类似的后处理步骤| grep AMAZONFIX,请考虑git for-each-ref --contains=...指令(在Git 2.7 中引入,2015 年第四季度

在您的情况下,为了便于阅读,在多行上:

git for-each-ref \
  --format='%(committerdate:short) %(authordate:relative) 
            %(refname:lstrip=3)' 
  --contains=$REMOTE_NAME/AMAZONFIX --contains=AMAZONFIX 
  --sort -committerdate refs/remotes/origin | \
  while read date branch; \
    do printf "%s | %s %s %s %s %s | %50s\n" $date $branch; 
  done

但是,这仅适用于名为 的分支AMAZONFIX,而不适用于xxxAMAZONFIXyyy

由于--contains不支持通配符,grep仍然是最佳选择:

git for-each-ref...| while... ;done | grep AMAZONFIX

推荐阅读