首页/开发/Git 与协作速查/git cherry-pick -n 只应用不提交
合并变基与冲突71 条

git cherry-pick -n 只应用不提交

把拣选的改动写入工作区与索引但不生成提交,便于先修改内容、合并多个提交或重新编写提交信息。

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

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;拣选与提交之间的空窗越短越安全。

易错点

  • -n 应用后处于「有暂存改动」的中间态,中途切分支改动跟着走;先提交或 stash 再切换。
  • 放弃时误用 git checkout . 只清工作区,暂存区内容仍在;正确做法是 git reset 或 reset --hard;不确定影响时先用 git status 看清两个区域的状态。
  • -n 后忘了自己提交,改动一直挂在暂存区,下次提交混进不相干内容;拣选完尽快收尾。
  • 冲突解决到一半直接 reset,解决进度全丢;先考虑 --abort 优雅退出,再决定重来还是改用手工应用。

数据来源与参考

  • Git 官方文档:git-cherry-pick(-n/--no-commit)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌