上游 · 理解本功能前需先掌握的(3):
下游 · 依赖/承接本功能的(1):
前置依赖包含从属概念升级流程承接
边方向 = 学习顺序(A→B 表示先学 A 再学 B)
为什么需要它
心智模型
本地提交只存在你的电脑上,别人看不到,也怕电脑丢了全没。推送(push)和拉取(pull)是本地与远程之间唯一的两条'通道':推上去让别人拿到、备份,拉下来让本地跟上大家。没有它们,协作就是空话。
历史背景 · 它为什么诞生诞生于 2005
诞生Git面向分布式共享设计push/pull:push将本地提交上传上游,pull自动fetch并merge远程分支;若远端有新提交(非fast-forward)则拒绝push,强制先整合他人工作,保证协作安全。
功能介绍
推送(push)把本地的提交上传到远程仓库,拉取(pull)把远程的新提交下载回本地。更细一点:pull 本质上是两步的合体——先 fetch(只下载远程的提交,不改变本地工作区),再 merge(把下载来的提交并入当前分支)。所以 git pull 约等于 git fetch 加 git merge。分支追踪(tracking):本地分支与远程分支(如 origin/main)建立追踪关系后,直接 git push 或 git pull 就能自动知道该推往哪里、从哪拉。首次推送常用 git push -u origin main,-u(--set-upstream)就是建立这种追踪关系。push 和 pull 构成日常同步循环:先拉最新,再做改动,再推上去。
核心术语
推送(push):把本地提交上传到远程仓库拉取(pull):fetch 加 merge 的合体,把远程改动带回本地fetch:只下载远程提交、不合并的轻量操作分支追踪(tracking):本地分支与远程分支的绑定关系-u / --set-upstream:首次推送时建立追踪关系的参数
适用场景
- 当你想把本地完成的新提交备份或分享到远程时,push
- 当你想获取队友最新提交、跟上项目进度时,pull
- 当 push 被拒绝、提示远程有领先提交时,先 pull 再推
- 当你想只下载远程提交、却不立即合并时,用 fetch
怎么操作(网页 vs 命令行 双轨)
🖱️ 网页操作 (GitHub.com)
- 在仓库 'Commits' 页面查看远程已有的提交与作者
- 在 'Pull requests' 页面发起 PR,实际上就是一次'跨分支的合并请求'
- 在仓库首页查看最近推送的活动记录
⌨️ 命令行 (进阶)
git push origin main # 推送本地 main 到远程 origingit pull origin main # 拉取远程 main 并合并到当前分支git fetch origin # 只下载远程最新提交,不自动合并git push -u origin main # 首次推送并建立分支追踪关系
新手建议先从网页操作入手,熟悉概念后再尝试命令行。命令行是真实开发中更常用的方式。
与其他功能的关系
| 关系(前置依赖 / 包含从属 / 概念升级 / 流程承接) | 说明 |
|---|---|
| 前置依赖Git 命令行基础(Git CLI Basics) | git push/pull 是基础命令,先学本地命令再学远程同步 |
| 前置依赖远程仓库(Remote Repository) | push/pull 在本地与远程仓库之间同步,先懂远程仓库 |
| 流程承接提交(Commit) | push 把本地 commit 推送到远程 |
| 概念升级桌面客户端:GitHub Desktop(桌面版) | Desktop 是 push/commit/PR 的图形化替代,先懂操作再懂工具 |
官方文档
小结
SUMMARY
push 上传本地提交,pull 下载并合并远程改动,fetch 则只下载不合并。先拉、再改、再推,就是你每天的同步循环。下一步:掌握几条最常用的 Git 命令,正式告别'只会点按钮'。