git pull 作用

服务端远程仓库拉取最新的更改并将其合并到客户端当前分支。
在这里插入图片描述

常用命令

当前分支命令行为描述依赖跟踪关系
heads/maingit pull origin release:dev参考下文❌ 否
heads/devgit pull origin release拉取 origin/release 最新提交,并合并到当前 dev 分支
git fetch origin release
git merge FETCH_HEADFETCH_HEAD存的是origin/release最新提交
❌ 否
heads/releasegit pull origingit fetch origin
git merge origin ,拉取 远程默认分支(origin/main)并合并
❌ 否
heads/releasegit pull(已设tracking)git fetch
git merge ,拉取 release 的 upstream origin/release 并合并
✅ 必须已配置

(heads/main) git pull origin release:dev 执行过程

git pull origin release:dev
实际上等价于以下两个步骤:
git fetch origin release:dev :它只会尝试用 origin/release 的内容快进(fast-forward)dev 分支指针 具体请参考
git merge FETCH_HEAD :然后将 origin/release 的最新提交(即 FETCH_HEAD)合并到当前分支(如 main)。

使用效果是: 将远程 origin/release 的内容合并到当前分支,并顺带在本地创建或更新一个名为 dev 的分支作为该远程分支的本地引用。这个 dev 可以看作是 origin/release 的一个“本地副本”。


git pull 指定合并模式

命令 / 配置推荐场景
git pull --ff(默认)多人协作、保护历史完整性
git pull --ff-only保证不产生新提交,如生产环境分支
git pull --no-ff明确记录每次合并动作
git pull --rebase本地开发分支更新上游改动
git checkout dev
git pull origin dev

A --- B --- C  远程分支 origin/dev 
A --- D        本地分支 dev

git pull origin dev
A --- B --- C          ← origin/dev
 \           \
  \           \
   D ---------- M      ← dev (after git pull)

------------------------------------------------------------
git checkout dev
git pull --rebase origin dev

A --- B --- C  远程分支 origin/dev 
A --- D --- E  本地分支 dev

A --- B --- C --- D' --- E'            ← dev (after git pull --rebase)

更多推荐