如何将一批提交的修改导入当前分支而不创建新提交?
解决方案
用git cherry-pick -n处理冲突的正确姿势
你提到的git cherry-pick -n完全可以实现需求,冲突后的处理流程只是不需要最后一步提交而已:
- 遇到冲突时,先手动编辑冲突文件,把代码冲突解决掉
- 执行
git add <已修复冲突的文件>,将解决后的文件放入暂存区 - 运行
git cherry-pick --continue,Git会继续应用剩下的提交,而且因为你加了-n参数,全程不会自动创建新提交
要是中途不想继续了,直接跑git cherry-pick --abort就能回到操作前的状态。
补丁导入的替代方案
用补丁确实可行,步骤也很清晰:
- 切换到包含目标提交的分支,生成指定范围的补丁文件:
# 生成最近10次提交的补丁,可根据需求调整数量 git format-patch -k -10 HEAD~10 # 或者指定精确的提交区间:git format-patch <起始提交哈希>..<结束提交哈希> - 切回当前分支,应用补丁:
git apply *.patch - 要是遇到冲突,补丁会提示具体的冲突文件,你手动解决后执行
git add <处理好的文件>就行,整个过程不会生成任何新提交。
如果想让补丁自动暂存修改(省掉手动add的步骤),可以用git am --no-commit <补丁文件>,冲突解决后同样是git add文件,再执行git am --continue,也不会创建提交。
内容的提问来源于stack exchange,提问作者roschach
相关产品推荐
相关产品推荐

