DAG总览 / 组目录 / 版本管理

推送与拉取(Push & Pull)

G02Layer 5
目录:前置概念账号与仓库版本管理协作项目管理自动化部署工具生态
层导航:L0L1L2L3L4L5 当前L6L7L8
上游 · 理解本功能前需先掌握的(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:首次推送时建立追踪关系的参数

适用场景

怎么操作(网页 vs 命令行 双轨)

🖱️ 网页操作 (GitHub.com)
  • 在仓库 'Commits' 页面查看远程已有的提交与作者
  • 在 'Pull requests' 页面发起 PR,实际上就是一次'跨分支的合并请求'
  • 在仓库首页查看最近推送的活动记录
⌨️ 命令行 (进阶)
  • git push origin main # 推送本地 main 到远程 origin
  • git 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 命令,正式告别'只会点按钮'。