根据Git远程跟踪分支的给定名称,如何找到跟踪它的本地分支?
通过Git远程跟踪分支的给定名称,例如,根据Git远程跟踪分支的给定名称,如何找到跟踪它的本地分支?,git,version-control,Git,Version Control,通过Git远程跟踪分支的给定名称,例如,upstream/develop如何找到跟踪它的本地分支(如果有的话) 如果可能的话,我正在寻找一种不依赖shell脚本且也适用于Windows的解决方案。基于(分支枚举)和(检索上游分支),您可以迭代本地分支,并检查其中是否有任何分支具有所需的跟踪远程分支: 每个ref的git--shell\ --格式=“测试%(上游:短)=“上游/开发”&&echo%(参考名称:短)”\ 参考文献/总目/| sh 另一种方法是对每个ref使用带的 git for-ea
upstream/develop
如何找到跟踪它的本地分支(如果有的话)
如果可能的话,我正在寻找一种不依赖shell脚本且也适用于Windows的解决方案。基于(分支枚举)和(检索上游分支),您可以迭代本地分支,并检查其中是否有任何分支具有所需的跟踪远程分支:
每个ref的git--shell\
--格式=“测试%(上游:短)=“上游/开发”&&echo%(参考名称:短)”\
参考文献/总目/| sh
另一种方法是对每个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分支的输出
git branch -vv | grep upstream/develop
为什么--shell
和|sh
?[man page}()中的@Romanvaleri,--shell
只进行替换(%(无论什么)
)正确引用shell进行直接求值,但不单独调用shell。同样适用于--perl
、--python
和--tcl
。感谢您的反馈,现在对我来说更清楚了^^以前从未使用过该选项,我认为您在这里并不真正需要排序-u
,删除它可能有助于n Windows(不是我使用Windows,所以我确实不知道:-))@ TrOrk真的,但当我尝试它没有,空白线有点昏暗和笨重。我猜这是一个选项^ ^