如何将Git无关分支的自定义提交应用至另一分支?
迁移自定义提交到新分支的正确操作方法
先确认你的自定义提交范围:
运行 git log --oneline master-2.1.2.1..V1-2.1.2.1,会列出V1-2.1.2.1上所有基于master-2.1.2.1的自定义提交,确保这些是你要迁移的内容。
方法一:Git Rebase(线性迁移,推荐)
这种方式会把自定义提交线性重放到新分支上,历史更整洁:
- 切换到目标分支:
git checkout V1-2.1.2.2 - 执行重基命令:
git rebase --onto V1-2.1.2.2 master-2.1.2.1 V1-2.1.2.1
该命令会把V1-2.1.2.1中master-2.1.2.1之后的所有提交,重新应用到V1-2.1.2.2上。 - 处理冲突:若Git提示冲突,打开冲突文件,手动整合
V1-2.1.2.2的基础代码和自定义改动,执行git add <冲突文件>,再运行git rebase --continue,重复直到重基完成。 - 验证:用
git log查看提交历史,编译固件确认自定义功能生效。
方法二:批量Cherry Pick(逐个迁移提交)
适合需要筛选部分提交的场景:
- 切换到目标分支:
git checkout V1-2.1.2.2 - 批量迁移所有自定义提交:
git cherry-pick master-2.1.2.1..V1-2.1.2.1 - 处理冲突:解决冲突后执行
git add <冲突文件>,再运行git cherry-pick --continue,直到所有提交迁移完成。 - 验证:检查提交历史和固件编译效果。
方法三:交互式三方合并(保留分支历史)
若不想重写提交历史,可通过合并整合改动:
- 切换到目标分支:
git checkout V1-2.1.2.2 - 执行合并命令:
git merge V1-2.1.2.1 --no-ff--no-ff参数会生成一个合并提交,保留V1-2.1.2.1的分支历史。 - 处理冲突:解决冲突后执行
git add <冲突文件>,再运行git commit完成合并。 - 验证:检查合并后的代码和提交历史,确认自定义改动已整合。
VS Code图形化操作步骤
针对你使用的VS Code Git插件,操作流程如下:
- 打开源代码控制面板(快捷键
Ctrl+Shift+G),切换到V1-2.1.2.2分支。 - Rebase方式迁移:
- 右键点击
V1-2.1.2.1分支,选择「Rebase Current Branch Onto...」。 - 选择
V1-2.1.2.2作为目标基底。 - 遇到冲突时,在编辑器中解决冲突,点击右上角「+」暂存文件,再点击面板中的「Continue Rebase」按钮,重复完成重基。
- 右键点击
- Cherry Pick方式迁移:
- 在历史记录中找到
V1-2.1.2.1的自定义提交(可对比master-2.1.2.1筛选),按住Ctrl多选目标提交。 - 右键点击选择「Cherry Pick」,解决冲突后暂存文件,点击「Continue Cherry Pick」。
- 在历史记录中找到
- 合并方式:
- 右键点击
V1-2.1.2.1分支,选择「Merge Branch into Current Branch」。 - 勾选「Create a commit even if merge is fast-forward」,点击「Merge」。
- 解决冲突后暂存文件,点击「Commit」完成合并。
- 右键点击
最终验证与推送
- 编译Marlin固件,确认自定义功能正常工作。
- 用
git status确认分支状态干净,提交历史符合预期。 - 推送到GitHub备份:
git push origin V1-2.1.2.2(首次推送需加-u参数:git push -u origin V1-2.1.2.2)。
内容的提问来源于stack exchange,提问作者Martin Collins
相关产品推荐
相关产品推荐

