带有<pattern>的git for-each-ref不返回任何内容

时间:2019-06-24 11:52:59

标签: git git-branch

git branch --list' hotfix '返回分支名称中包含单词“ hotfix”的分支列表,而 git for-each-ref --format ='%(authorname)''修补程序'不返回任何内容,甚至不返回 / n 符号

2 个答案:

答案 0 :(得分:1)

正如git for-each-ref中的the document所说,

  

如果给出一个或多个模式,则仅显示匹配的裁判   针对至少一种模式,使用fnmatch(3)或按字面意义   后一种情况完全匹配,或者从一开始就匹配   斜线。

并且正如fnmatch中的the document所说,

  

fnmatch()函数检查字符串参数是否与   模式参数,它是外壳通配符模式(请参阅glob(7))。

并且由于分支就像路径refs/heads/foo/bar,因此此处的模式应为refs/heads/**/*hotfix*

git for-each-ref --format='%(authorname)' 'refs/heads/**/*hotfix*'

如果您还想要远程分支机构,

git for-each-ref --format='%(authorname)' 'refs/heads/**/*hotfix*' 'refs/remotes/**/*hotfix*'

这两个模式匹配hotfixorigin/hotfix-118hotfix-118118-hotfixmy-hotfix-110等分支。

答案 1 :(得分:1)

git branch仅在分支(即refs/heads中的refs)中查找(默认情况下),因此它使您可以使用仅与“分支名称”匹配的模式(例如some-hotfix实际上是完整引用名称refs/heads/some-hotfix的简写。

for-each-ref正在查看所有引用,因此不允许您使用此类模式。如果您知道自己只对分支感兴趣,则可以使用refs/heads/*hotfix*之类的东西(如果不是,则可以使用**/*hotfix*之类的东西)。