首页/开发/Git 与协作速查/git add -p 交互式暂存
Git 基础与命令88 条

git add -p 交互式暂存

逐块选择改动进入暂存区:-p 按补丁块询问是否暂存,是拆分提交、保持提交粒度的常用工具;-e 可手工编辑补丁块。

Git 与协作速查开发更新于 2026-10-13

git add -p 是什么

git add -p 把文件的改动拆成一个个补丁块,逐块询问是否加入暂存区。它解决的是「一个文件里混着几件不同的事」这个问题:可以只把其中一部分放进这次提交,剩下的留到下一次。按补丁块提交是保持提交粒度的重要手段。

交互时的按键

每个补丁块都会给出提示,常用回答有 y 表示暂存这块、n 表示跳过、s 表示把大块拆成更小的块、e 表示手工编辑补丁、q 表示退出、问号查看帮助。不熟悉时先输入问号看一遍说明,比凭记忆猜按键含义稳妥得多。

基本信息

适用平台Linux / macOS / Windows(Git 2.x)
语法git add -p [--] [路径]
作用按补丁块选择进入暂存区的内容
交互键y 暂存;n 跳过;s 拆小块;e 编辑;q 退出;问号看帮助
前提条件文件必须已经被跟踪
相关命令git add -i 交互菜单;git add -e 手工编辑补丁

典型使用场景

  • 拆分提交:一个文件里同时含新功能与格式调整,分开提交
  • 剔除调试代码:提交业务改动时跳过临时打印语句
  • 精细评审:让每条提交只承载一类改动,便于回溯
  • 留住误改:把顺手改到但不想提交的部分保留在工作区
  • 大文件重构:配合 s 拆小补丁块,做出语义单一的提交

常用示例

常用示例
git add -p                       # 逐块选择要暂存的改动
git add -p src/main.go           # 限定到某个文件
git add -e file.txt              # 手工编辑补丁后再入库
git add -N newfile.py            # 新文件先登记才能进入交互选择
git add -p && git diff --staged  # 选完立刻复核即将提交的内容

常用交互键

按键含义说明
y暂存这个补丁块最常用
n跳过这个补丁块改动留在工作区
s把大块拆成更小的块按上下文行切分
e手工编辑补丁行需要精确控制时使用
a该文件后续改动一并暂存跳过后续询问
q退出交互已确认的部分保留
大重构文件用 s 把补丁块拆小,能做出语义单一的提交,回滚与代码评审都会轻松不少。
-p 只处理已经被跟踪的文件。新文件需要先用 git add -N 登记,才能进入交互选择流程。

易错点

  • -p 只处理已跟踪文件,新文件要先 git add -N 才能进入交互选择
  • 补丁块按上下文切分,不保证符合语义边界,必要时用 e 手工调整
  • 改动行间距过小时 s 无法继续细分,需要改用 e 编辑补丁
  • 跳过的改动仍留在工作区,提交之后别忘了它们还没有被处理

数据来源与参考

  • Git 官方文档:git-add(--patch/--interactive)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌