正确命令是 git remote get-url --push origin 查看推送地址,git config --get remote.origin.pushurl 也可获取;fetch 地址用 git remote get-url origin 或 git config --get remote.origin.url。

git remote get-url 命令本身不区分 push 和 fetch 地址
直接运行 git remote get-url origin 只会输出一个地址,通常是该 remote 的「默认 fetch URL」。Git 从 2.19 开始支持分别配置拉取(fetch)和推送(push)URL,但 git remote get-url 默认不显示这种分离状态——它只返回 remote.origin.url 的值,哪怕你已手动设置了 remote.origin.pushUrl。
如何查出实际用于 push 和 fetch 的不同地址
Git 把 fetch 和 push 地址分别存在两个配置项里:remote.origin.url(等价于 remote.origin.fetch)负责拉取,remote.origin.pushUrl 专用于推送。要准确看到两者,得绕过 git remote get-url,直接查 config:
- 查看拉取地址:
git config --get remote.origin.url - 查看推送地址:
git config --get remote.origin.pushUrl - 想一次性看全相关配置:
git config --get-regexp '^remote\.origin\.\(url\|pushUrl\)$'
如果 pushUrl 未设置,第二条命令会无输出,此时 Git 自动复用 url 值做推送——这是常见且安全的默认行为。
为什么有人会单独设 pushUrl?常见场景与风险
典型用途是「读写分离」:比如拉取走 HTTPS(免密、适合 CI),推送走 SSH(需密钥、更安全)。但要注意:
- Git 不校验两个地址是否指向同一仓库,配错会导致 push 成功但别人 pull 不到新提交
-
git push用的是pushUrl,但git pull和git fetch仍只认url;合并操作不会自动跨地址同步 - 某些 GUI 工具或 CI 脚本可能只读
url,忽略pushUrl,造成预期外失败
想让 git remote get-url 显示 push 地址?加 --push 参数
Git 2.19+ 支持 --push 标志,强制它读 pushUrl:
-
git remote get-url --push origin→ 输出remote.origin.pushUrl值(若未设则 fallback 到url) -
git remote get-url --all origin→ 同时列出url和pushUrl(如果存在)
注意:--all 不是所有旧版 Git 都支持,低于 2.20 的环境请优先用 git config 查。
真正容易被忽略的是:即使你用 git remote set-url --push 改了推送地址,git remote -v 仍只显示 origin 一行(fetch 地址),不会自动补出 push 行——它本质上是个简略视图,不能替代 config 检查。











