根据给定的Git远程跟踪分支的名称,如何找到哪个本地分支跟踪它



根据给定的Git远程跟踪分支的名称,例如upstream/develop,如何找到哪个本地分支跟踪它(如果有的话(?

如果可能的话,我正在寻找一个不依赖于shell脚本并且也适用于Windows的解决方案。

另一种选择是使用带有for-each-ref的条件格式

git for-each-ref --format="%(if:equals=upstream/develop)%(upstream:short)%(then)%(refname:short)%(end)" refs/heads | sort -u

可以更方便地将其放入类似的别名中

git config --global alias.who-tracks '!f() { git for-each-ref --format="%(if:equals=upstream/$1)%(upstream:short)%(then)%(refname:short)%(end)" refs/heads | sort -u; }; f'
# then when you need it :
git who-tracks develop
git who-tracks another/branch

在这个别名中,我假设有一个唯一的远程,但当然,如果你想在不同的远程上使用它,可以稍微调整一下,在参数中包括远程名称:

git config --global alias.who-tracks '!f() { git for-each-ref --format="%(if:equals=$1)%(upstream:short)%(then)%(refname:short)%(end)" refs/heads | sort -u; }; f'
# then when you need it :
git who-tracks upstream/develop
git who-tracks origin/another/branch

另一个替代方案是用grep过滤简单git branch的非常详细的输出

git branch -vv | grep upstream/develop

基于这个答案(分支枚举(和这个答案(检索上游分支(,您可以遍历本地分支,并检查其中是否有所需的跟踪远程分支:

git for-each-ref --shell 
--format='test %(upstream:short) = "upstream/develop" && echo %(refname:short)' 
refs/heads/ | sh

相关内容

  • 没有找到相关文章