远程仓库基础
本教程共 26 篇 · 第 12 篇 · 更新于 2026-07-29 · 约 7 分钟阅读
12. 远程仓库基础
本节目标:学会添加远程仓库、推送本地提交、抓取远程更新,并搞清楚 fetch 和 pull 到底差在哪。
Git 是分布式的。你的仓库可以克隆到另一台机器上继续工作。这个”另一台机器”就是远程仓库。
远程仓库是什么
远程仓库就是托管在网络上的版本库。可以是你公司内网的 GitLab、公网的 GitHub、甚至隔壁同事电脑上的一个共享文件夹。
名字听起来很远,但操作起来就像本地命令加个”地址”一样自然。
查看远程仓库
git remote
origin
-v 能看到更多细节:
git remote -v
origin https://github.com/user/repo.git (fetch)
origin https://github.com/user/repo.git (push)
origin 是 Git 给远程仓库起的默认名字,和 main 作为默认分支名一样,没有魔法。
添加远程仓库
手动关联一个远程仓库:
git remote add origin https://github.com/user/repo.git
克隆仓库时 Git 已经帮你做了这步。
也可以挂多个远程仓库:
git remote add upstream https://github.com/origin/repo.git
想重命名:
git remote rename origin old-origin
想删除:
git remote remove old-origin
推送本地提交
把本地分支送到远程:
git push origin main
如果本地分支名不一样,可以用 本地名:远程名 的格式:
git push origin feature:awesome-feature
Warning推送被拒绝?通常因为远程有你没有的提交。先
git pull把远程最新变更拉下来、解决冲突,再 push。
抓取远程更新
git fetch 只做一件事:把远程最新数据下载到本地,但不改你的工作目录。
git fetch origin
安全、无副作用。你可以先看看远程有了什么再决定怎么合并。
拉取 = 抓取 + 合并
git pull 是 fetch + merge 的快捷方式:
git pull origin main
等于:
git fetch origin
git merge origin/main
fetch vs pull:到底用哪个
| 维度 | fetch | pull |
|---|---|---|
| 动作 | 只下载 | 下载 + 合并 |
| 风险 | 零 | 可能触发冲突 |
| 适用场景 | 想先看看远程有啥变化 | 确定直接同步 |
很多老手更爱用 fetch,然后手动决定是 merge 还是 rebase。这样能避免”不明不白的历史合并”。
用 pull —rebase 保持线性
git pull --rebase origin main
等于 fetch + rebase,本地提交会被挪到远程最新提交之后,提交历史更干净。
想把它设为默认:
git config --global pull.rebase true
删除远程分支
远程分支不是你本地的,要用 push 的特殊语法删除:
git push origin --delete feature
或旧语法:
git push origin :feature
本质是”推一个空值过去”,把远程的指针删掉。
查看远程仓库详情
git remote show origin
输出包括:远程 URL、HEAD 分支、哪些远程分支被跟踪、push/pull 的对应关系。信息非常全面,排查问题首选。
* remote origin
Fetch URL: https://github.com/user/repo.git
Push URL: https://github.com/user/repo.git
HEAD branch: main
Remote branches:
main tracked
feature tracked
Local branch configured for 'git pull':
main merges with remote main
Local ref configured for 'git push':
main pushes to main (up to date)
换个角度看 fetch
git fetch 之后,远程分支在本地以 远程名/分支名 的形式存在,比如 origin/main。
这是一个”远程跟踪分支”,你不能在上面直接工作,但可以查看、合并它。
git fetch origin
git log origin/main # 看远程 main 的历史
git merge origin/main # 手动合并
协议那点事
远程仓库地址支持两种协议:
- HTTPS:
https://github.com/...,每次 push 可能要输用户名和密码。 - SSH:
git@github.com:...,配好密钥后免密推送。
新手先用 HTTPS 熟悉流程,再换 SSH 提升体验。下一章 GitHub 章节会讲怎么配 SSH。
本章小卡片
| 命令 | 作用 |
|---|---|
git remote -v | 查看远程仓库及 URL |
git remote add <名> <url> | 添加远程仓库 |
git push <远程> <分支> | 推送本地分支 |
git fetch <远程> | 下载远程最新数据 |
git pull <远程> <分支> | 抓取 + 合并 |
git pull --rebase <远程> <分支> | 抓取 + 变基 |
git remote show <远程> | 查看远程详情 |
git push <远程> --delete <分支> | 删除远程分支 |
Note每天开工前先
git fetch,心里有数今天有没有同事推了东西。push 前先 fetch,被拒绝的概率会低很多。