Git

拉取Pull

你可能会说

同事说他改完了,我怎么把他那版拿到我电脑上?

拉取是把网上已经保存的新版本同步到当前项目的操作。例如同事把改动上传到 GitHub 后,可以拉取到自己电脑上的同一个项目。开始前先保存或收好未完成改动;第一次把整个项目下载到电脑,应使用克隆。
网上的项目比电脑多 2 个新版本
下载并接上新版本pull→
我的电脑已经更新到最新
git pull

Pull 用在“电脑里已经有这个项目”之后:它把网上新增的版本取回,再接到你当前的版本线上。操作前先保存或收好手头改动。

组成结构 · Anatomy
☁️ 远程仓库GitHub 上的新提交 git fetch → 🗄 本地仓库先下载,不动你的文件 git merge → 💻 工作区新代码合进来
远程分支保存协作者已推送的提交
将新提交下载到本地仓库,不修改工作目录文件
获取的提交先保存于本地仓库,等待合并或变基
将获取的提交整合到当前分支,此时可能发生冲突
合并完成后,工作目录更新为当前分支的文件版本
常见变体 · 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 后,可获得相同的提交历史
延伸阅读 · 权威出处