git pull 是 git fetch 加一次整合:把远端更新取回来后,默认用 merge 合进当前分支,也可以改成 rebase。日常用得最多,也最容易因为「默认行为没配清楚」而多出一堆合并提交。

本文列出 git pull 的常用参数,并给出团队里较稳的配置建议。

ℹ️
关于本系列
本文是《Git 使用教程》按命令拆分的第 25 / 28 篇,全部收录在 Git 栏目。参数表列的是日常高频项,并非穷举;想看某个命令的完整参数,用 git pull -h 看精简列表、git help pull 看完整手册。示例以 Git 2.56.0 为准。

一、命令语法

先看语法骨架,再对照下一节的参数表。<占位> 表示必填值,实际输入时不要带尖括号;[...] 表示可选项,-- 用来分隔选项与路径。

bash语法
git pull [<options>] [<repository> [<refspec>...]]

二、参数逐项详解

下表按用途列出 git pull 的常用参数,每项都注明了「它到底改变了什么」。

参数作用
<remote> [<分支>]指定拉哪个远端的哪条分支,不写用当前分支的上游
--rebase / --no-rebase用变基 / 用合并整合,覆盖 pull.rebase 配置
--ff-only只在能快进时更新,否则直接报错,不产生合并提交
--no-ff / --ff强制生成 / 允许快进合并提交
--autostash / --no-autostash本地有未提交改动时自动 stash,整合完再恢复
--all拉取所有已配置远端(配合 --rebase 需谨慎)
--tags / --no-tags顺带取 / 不取标签
--depth=<n>在浅仓库里按指定深度拉取
--dry-run只演练,不真正整合
--squash把改动压成工作区改动,不生成合并提交
--verify-signatures / --no-verify-signatures校验 / 不校验合并端的 GPG 签名
-q / -v静默 / 详细输出

三种默认行为怎么配

配置效果适合
pull.ff only只允许快进,分叉就报错发布分支、多人共享主干(最稳)
pull.rebase true本地提交自动变基到远端之上功能分支、想保持线性历史
pull.rebase false生成合并提交希望保留合并痕迹的团队

三、常用示例

最安全的日常拉取

bash最安全的日常拉取
git status -sb                 # 先确认工作区干净
git pull --ff-only
# 若提示分叉:先 fetch 看差异,再决定 merge 或 rebase

本地有改动时

bash本地有改动时
git pull --autostash --rebase
# 等价于:stash → fetch → rebase → stash pop

一次性的行为覆盖

bash一次性的行为覆盖
git pull --no-rebase origin main     # 本次用 merge
git pull --rebase origin main        # 本次用 rebase
git pull --dry-run origin main       # 先看会拉什么

四、注意事项

⚠️
pull 之前先看工作区
本地有未提交改动时,pull 可能产生冲突并留下混合状态。要么先 commit/stash,要么用 --autostash。另外 --rebase 会重写本地尚未 push 的提交哈希,已经公开过的分支不要这么做。
推荐给所有人的一行配置: git config --global pull.ff only。它让「本地与远端分叉」变成一个明确的错误提示,而不是悄悄生成一堆合并提交;真需要整合时再显式执行 merge 或 rebase,意图清楚得多。

五、小结

把 pull 拆开理解:fetch + 「怎么整合」。参数里真正需要决策的只有 --rebase / --ff-only 和 --autostash。团队统一配好 pull.ff 或 pull.rebase,能省掉大量莫名其妙的合并提交。

本系列共 28 篇,一个命令一篇,完整目录见 Git 栏目。下一篇:git push 命令参数详解。