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 登记,才能进入交互选择流程。