最直接的方式是运行 git remote get-url origin,它仅返回 origin 远程仓库的 url;若需查看推送地址则加 --push 参数,--all 可列出同一远程的多个 url,而 git config --get remote.origin.url 则读取原始配置值。

查看当前远程仓库地址用 git remote get-url
最直接的方式是运行 git remote get-url origin,它会输出当前名为 origin 的远程仓库 URL。如果项目配置了多个远程(比如 upstream),把 origin 换成对应名字即可。
常见错误是误用 git remote show origin —— 它确实会显示 URL,但还会附带大量分支跟踪信息,干扰快速确认;而 get-url 只返回地址本身,干净利落。
- 如果提示
remote origin does not exist,说明还没添加远程,需先执行git remote add origin <url></url> - 加
--push参数可单独查看推送地址:git remote get-url --push origin,某些镜像或权限分离场景下,拉取和推送 URL 可能不同 - 加
--all可一次性列出所有远程的 URL:git remote get-url --all origin(注意不是--all列所有远程名,而是列同一远程的多个 URL)
从 Git 配置文件里直接读取 remote.origin.url
Git 把远程地址存放在本地仓库的 .git/config 文件中,等价于手动查配置项 remote "origin" 下的 url 值。
执行 git config --get remote.origin.url 就能提取出来。这个命令不依赖远程连接状态,即使网络断开、远程服务不可达也能立刻返回结果。
使用四维度框架评估任意 GitLab MR 或 GitHub PR 的复杂度:规模(20%),认知负荷(30%),审查工作量(30%),风险/影响(20%)...
- 如果想看全部远程配置项,用
git config --get-regexp remote\..*\.url - 注意大小写:配置项是
url,不是URL或Url;写错会静默返回空 - 该值可能被
git config --global url.<base>.insteadOf重写,比如把https://github.com/替换为git@github.com:,此时get-url返回的是替换后的地址,而config --get返回原始配置值
远程地址显示为 SSH 而不是 HTTPS?检查是否被 insteadOf 规则影响
你看到的地址未必是仓库初始化时设置的那个,Git 允许通过全局或系统配置自动改写 URL。典型表现是:明明用 HTTPS 添加的远程,git remote get-url origin 却返回 git@github.com:user/repo.git。
这是因为配置了类似这样的规则:url."git@github.com:".insteadOf https://github.com/。它会在 Git 内部把匹配的 HTTPS 地址替换成 SSH 格式。
- 检查当前生效的重写规则:运行
git config --get-all url."git@github.com:".insteadOf - 临时绕过重写:加
--no-optional-locks不起作用,正确方式是用git -c url."".insteadOf= remote get-url origin(清空 insteadOf 上下文) - 这种重写只影响 Git 自身行为,不影响
git config --get直接读取的原始值
为什么 git remote -v 显示两行?理解 fetch 和 push 地址的区别
执行 git remote -v 通常会输出两行,例如:
origin https://github.com/user/repo.git (fetch) origin https://github.com/user/repo.git (push)
这表示 fetch 和 push 使用相同地址。但二者可以不同 —— 比如公司内部用只读镜像做 fetch,主仓库做 push。
- 修改推送地址单独设置:
git remote set-url --push origin git@company.com:user/repo.git - 此时
git remote -v会显示两个不同 URL,而git remote get-url origin默认只返回 fetch 地址 - 别依赖
-v输出来判断“唯一远程地址”,它只是展示,不是权威来源;真正用于克隆或 CI 脚本的,应明确指定--push或--fetch
git remote get-url origin,但一旦遇到权限报错、CI 构建拉不到代码、或者 fork 后同步上游失败,就得意识到:看到的地址可能已被重写、fetch/push 地址已分离、或配置根本没生效——这些细节藏在命令组合和配置层级里,而不是某一个“标准答案”里。










