git:不要对“for-each-ref”输出进行排序

问题描述 投票:0回答:1

有没有办法不对

git for-each-ref
的操作进行排序,即按照命令行上指定的顺序保留它?

我的用例:我想从以下模式集中找到第一个(或最后一个)分支名称:

% git for-each-ref --format '%(refname:short)' 'refs/heads/dev/v*' 'refs/heads/develop' 'refs/heads/master' 'refs/heads/main' 
develop
main
master

但是,正如您所看到的,

main
出现在
master
之前,因为根据
--sort
的文档,“当未指定时,使用
refname
。”

如果这是一个 x-y 问题 - 这是寻找开发头的启发式别名的一部分(使用我们团队方便的任何优先级),所以如果有人对此有更好的技术,我也会感兴趣。

# Determine the development head of this repository.  If there's not one, assume we're using mainline development.
# Handy for rebasing feature branches.
dev-branch = "!f() { \n\
    git for-each-ref --format '%(refname:short)' 'refs/heads/dev/v*' 'refs/heads/develop' 'refs/heads/main' 'refs/heads/master' | \n\
    head -n 1; \n\
}; f"
git branch alias
1个回答
0
投票

很可能不会。 'refs/heads/dev/v*' 无论如何都必须排序;顺便说一句,如果有很多

v*
,您确定要获得第一个,而不是最后一个吗?好吧,除了一一检查之外,我没有看到任何其他方法:

for branch in 'refs/heads/dev/v*' 'refs/heads/develop' 'refs/heads/main' 'refs/heads/master'; do
    git for-each-ref --format '%(refname:short)' "$branch"
done
© www.soinside.com 2019 - 2024. All rights reserved.