You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

多远程仓库下git ls-remote默认查询哪个远程的信息?

Git ls-remote 默认显示哪个远程的数据?

这个问题问得特别精准,刚好说到了git ls-remote容易被忽略的默认行为细节,我给你拆解清楚:

核心逻辑:默认目标不是固定的origin

很多人会以为git ls-remote默认查的是origin,但其实它的优先级是这样的:

  • 首先看仓库的remote.pushDefault配置项——如果这个值存在,就用它对应的远程仓库
  • 如果没有设置remote.pushDefault,就 fallback 到当前分支关联的远程仓库(也就是branch.<当前分支名>.remote配置的值)

你把原来的origin改名为origin1后,依然显示它的数据,大概率是因为:要么你的remote.pushDefault被设成了origin1,要么当前分支的关联远程就是origin1

如何验证当前的默认目标?

你可以用这两个命令快速确认:

  • 查看全局/仓库级的默认推送远程:git config --get remote.pushDefault
  • 查看当前分支绑定的远程:git config --get branch.$(git rev-parse --abbrev-ref HEAD).remote

手动指定要查询的远程

如果不想依赖默认配置,直接在命令后面加上远程名称即可,比如:

git ls-remote my-remote-1
git ls-remote my-remote-2

这样就能精准获取对应远程仓库的引用数据了。

为啥切换分支后显示的数据会变?

因为Git允许不同分支绑定不同的远程仓库(比如有的分支推送到origin1,有的推送到origin2)。当你切换分支时,branch.<分支名>.remote的值会跟着变化,git ls-remote的默认查询目标自然也就换成了当前分支绑定的远程——这就是你观察到的“切换分支后从关联远程获取数据”的原因。

内容的提问来源于stack exchange,提问作者Number945

火山引擎 最新活动