切换·Esc 返回

拉取Pull

Git 专区
把网上代码仓库的最新版本下载并合并到电脑

pull 会先获取远程提交,再按仓库配置合并或变基到本地分支。执行前先确认工作区状态清楚;未完成改动可以先 commit 或贮藏 Stash,减少冲突和混淆。

远程仓库队友推的新存档 fetch 本地仓库 merge 工作区index.html 变最新
$ git status && git pull
pull 一口气做两件事:先 fetch 把新存档下载到本地仓库,再 merge 合进你正在改的文件。开工前先 pull,冲突少一半;工作区有半成品时先 commit 再拉。

什么时候用

  • 协作时开工先 pull 再干活:和远程对齐,冲突能少一大半
    $ git status --short(没有输出,工作区干净)$ git pullFast-forward
  • 换电脑接力:走前 推送 Push、到新电脑 pull,两台无缝衔接
    公司💻 push☁️家里💻 pull
  • 第一次取得仓库用克隆 Clone,之后同步更新再用 pull
    clone第一次:整仓连历史下载
    pull之后每次:只取增量更新
  • 拉下来出冲突照样手解:选版本、删标记、重新 提交 Commit
    $ git pullAuto-merging index.htmlCONFLICT (content): Merge conflict in index.html拉下来也可能冲突,照样手解

什么时候不用

  • 闷头改一周从不 pull:队友推了一堆,合并时冲突成山
    队友已推 12 个新存档你还停在上周
    闷头改一周不 pull,合并时冲突成山
  • pull 出冲突关掉当没看见:仓库卡在合并中状态,越拖越乱
    Automatic merge failed;fix conflicts and then commit the result.(main|MERGING) $ 关掉当没看见…
  • 拉下来的改动看都不看接着写:容易把队友的成果又改回去
    pull 下来 3 个文件变了看都不看
    接着写,把队友的成果又改回去
  • pull 不能恢复从未提交过的本地改动
    $ git pullAlready up to date.刚才没存档的改动还是回不来
组成结构 · Anatomy
☁️ 远程仓库GitHub 上的新存档 git fetch → 🗄 本地仓库先下载,不动你的文件 git merge → 💻 工作区新代码合进来
1远程仓库RemoteGitHub 上的最新状态,队友推上去的存档都在这
2取回Fetch把新存档下载到本地仓库,这一步不动你正在改的文件
3本地仓库Local Repo新存档先躺在这,和下载视频先存缓存一个道理
4合并Merge把取回的存档合进当前分支,这一步才可能出冲突
5工作区Working Dir合完之后,你正在编辑的文件就是最新版了
常见变体 · Variants
拉取更新git pull
git status && git pull
先确认工作区,再和远程对齐
只看不合git fetch
git fetch
只看看远程有啥动静,先不合
拉了最新up to date
Already up to date.
看到这句说明本地已是最新
典型使用场景
终端 git pull 取更新
zsh — my-first-page
$ git pull remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. Updating a3f9c21..e7b2d48 Fast-forward index.html | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
pull 下来遇到冲突
zsh — my-first-page
$ git pull Auto-merging index.html CONFLICT (content): Merge conflict in index.html Automatic merge failed; fix conflicts and then commit the result. 打开冲突文件手选版本,再 add + commit 收尾
clone 与 pull 的区别
git clone
第一次:整个仓库连全部历史下载到本地
📦 36 个对象 · 全部存档
git pull
之后每次:只取你没有的那几个新存档
📄 1 个文件 · 增量更新
公司 push、家里 pull
🏢💻
下班前
git push
☁️
GitHub
云端仓库
🏠💻
到家坐下
git pull
两台电脑分别完成 push / pull 后,才会同步到同一进度