Git如何将master分支上的历史提交迁移至其他分支?
单个指定提交跨分支合并操作方法
你要实现的是仅把master分支上哈希为1fxxxx的单条提交合入4.4.8分支、不带master上该提交之后的其他后续提交,直接用Git的cherry-pick(拣选)命令即可,操作流程如下:
- 第一步:切换到目标合入分支
执行命令切到4.4.8分支:git checkout 4.4.8
高版本Git也可以用git switch 4.4.8,效果完全一致。 - 第二步:确认工作区状态
执行git status看一眼有没有未提交的本地改动,如果有临时修改不想提交,可以先执行git stash把改动暂存起来,等全部操作完成后执行git stash pop就能恢复这些临时改动。 - 第三步:拣选目标提交
直接执行命令拉取指定单条提交:git cherry-pick 1fxxxx
命令里的1fxxxx替换成你手里的目标提交实际哈希即可,短哈希、全哈希都能被Git正常识别。
异常处理
执行拣选时如果提示代码冲突:打开标记了冲突的文件,手动修改解决冲突内容后,依次执行
git add 解决完冲突的文件名、git cherry-pick --continue就能完成本次合入。
如果中途想放弃本次拣选操作,直接执行git cherry-pick --abort即可回到操作前的状态,不会损坏4.4.8分支的原有内容。
结果验证
操作完成后执行git log查看4.4.8分支的提交历史,就能看到1fxxxx对应的提交已经追加到当前分支的提交记录最前端,master分支上该提交之后的其他版本提交完全不会被带入,符合你的需求。
- 小提示:如果执行命令时提示找不到
1fxxxx这个提交,先执行git fetch origin拉取全量远程提交记录再重试即可。
内容的提问来源于stack exchange,提问作者yoshimi
相关产品推荐
相关产品推荐

