Karthik Nayak <karthik.188@xxxxxxxxx> writes: >> As "git for-each-ref" takes pattern that is prefix match, e.g., >> >> $ git for-each-ref refs/remotes/ >> >> shows everything like refs/remotes/origin/main that begins with >> refs/remotes/, I wonder if >> >> $ git for-each-ref "" >> >> should mean what you are asking for. After all, "git for-each-ref" >> does *not* take "--branches" and others like "git log" family to >> limit its operation to subhierarchy of "refs/" to begin with. > > But I don't think using an empty pattern is the best way to go forward. > This would break the pattern matching feature. For instance, what if the > user wanted to print all refs, but pattern match "*_HEAD"? > > Would that be > > $ git for-each-ref "" "*_HEAD" Because you do not omit the leading hierarchy when using globs: $ git for-each-ref v2.4\?.\* ;# nothing $ git for-each-ref tags/v2.4\?.\* ;# nothing $ git for-each-ref refs/tags/v2.4\?.\* ;# gives tags in v2.40 and onwards I would expect that it would be more like $ git for-each-ref "*_HEAD" And because you can have two or more patterns, e.g., $ git for-each-ref refs/tags/v2.4\?.\* refs/heads/m\* to get those recent tags and branches whose name begins with 'm', I would expect your $ git for-each-ref "" "*_HEAD" would probably be equivalent to $ git for-each-ref ""