cherry-pick -n 是什么
git cherry-pick -n(即 --no-commit)把目标提交的改动写入工作区与索引,但不自动生成提交。适合「先拣选、后决定怎么提交」:改完内容自己写提交信息、连续拣选多个提交合并成一次提交、或与其他改动拼装。结束后要么 git commit 收尾,要么 reset 放弃。
基本信息
| 用途 | 并入改动,由你决定如何提交 |
|---|---|
| 语法 | git cherry-pick -n <提交> |
| 后续 | 修改后自行 git commit;放弃用 git reset |
| 组合 | 可连续 -n 拣选多个提交再一次性提交 |
| 冲突 | 遇冲突按正常流程解决,解决后可提交或中止 |
典型使用场景
- 回移热修复:把主干修复拣回发布分支,改成符合发布分支的提交信息。
- 合并多个提交:连续 -n 三个提交,合成一次「批量回移」提交。
- 先改再用:拣选后做适配(改包名、去掉不适用部分)再提交。
- 拼装发布提交:拣选内容加手改一起进一个提交。
- 谨慎试水:先不提交,看 diff 确认范围再决定去留与提交信息。
- 拆分拣选:一个提交里只有部分改动要,拣选后再删减。
常用示例
常用示例
git cherry-pick -n 3f6a2b1 # 只应用,不生成提交
git diff --cached --stat # 检查暂存了哪些改动
git commit -m 'fix: 回移登录修复' # 自己写提交信息
# 放弃:git reset --hard 会连同工作区一起恢复
git reset # 只退暂存,保留工作区继续编辑放弃方式对照
| 命令 | 影响范围 | 场景 |
|---|---|---|
| git reset | 仅退暂存 | 还想继续改再提交 |
| git reset --hard | 工作区加暂存 | 全部放弃 |
| git stash | 收进储物间 | 先放下、稍后恢复 |
| cherry-pick --abort | 中止整个序列 | 冲突中途整体放弃 |
连续 -n 拣选多个提交再一次性提交,适合把多个热修复并成一次发布提交;中途切分支容易把中间态改动带走,先提交或 stash;拣选与提交之间的空窗越短越安全。