Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据Git远程跟踪分支的给定名称,如何找到跟踪它的本地分支?_Git_Version Control - Fatal编程技术网

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

根据Git远程跟踪分支的给定名称,如何找到跟踪它的本地分支?,git,version-control,Git,Version Control,通过Git远程跟踪分支的给定名称,例如,upstream/develop如何找到跟踪它的本地分支(如果有的话) 如果可能的话,我正在寻找一种不依赖shell脚本且也适用于Windows的解决方案。基于(分支枚举)和(检索上游分支),您可以迭代本地分支,并检查其中是否有任何分支具有所需的跟踪远程分支: 每个ref的git--shell\ --格式=“测试%(上游:短)=“上游/开发”&&echo%(参考名称:短)”\ 参考文献/总目/| sh 另一种方法是对每个ref使用带的 git for-ea

通过Git远程跟踪分支的给定名称,例如,
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真的,但当我尝试它没有,空白线有点昏暗和笨重。我猜这是一个选项^ ^