Git如何将指定分支下仅属于自己的提交迁移到另一基于master的分支
Git 专属提交迁移操作方案
两种常用操作可选,可根据自己的提交数量选择:
方案1:git cherry-pick 拣选提交(适合提交数量≤10的场景)
- 首先切换到分支A,执行命令筛选自己的所有提交,记录所有提交哈希值(按提交时间从早到晚排序):
git log --author="你的Git配置用户名" --oneline - 切换到基于master的目标分支:
git checkout <目标分支名称> - 按提交先后顺序执行批量拣选:
git cherry-pick <最早的提交哈希> <次早的提交哈希> ... <最晚的提交哈希>
注意:如果执行过程中出现冲突,解决冲突后执行git add .,再运行git cherry-pick --continue即可继续后续拣选;若想放弃本次操作,执行git cherry-pick --abort即可回到拣选前的状态
方案2:git rebase 交互式变基(适合提交数量多、你的提交在分支A上连续排列的场景)
- 先切换到分支A:
git checkout 分支A - 执行交互式变基命令,其中<你第一次提交前的父提交哈希>可以从刚才的git log结果里找,就是你的第一条提交记录的上一条的哈希:
git rebase -i --onto <目标分支名称> <你第一次提交前的父提交哈希> - 执行后会弹出文本编辑页面,把所有不属于你的提交记录前的
pick参数改成drop,保存退出后变基自动执行 - 变基完成后,分支A就仅保留你的提交且基底为目标分支,此时切换回目标分支合并即可:
git checkout <目标分支名称> && git merge 分支A
操作前建议先给两个分支打临时标签做备份,避免误操作丢失改动:
git tag backup_<分支名> <分支名>,确认操作无误后再删除备份标签即可
内容的提问来源于stack exchange,提问作者Kowshhal
相关产品推荐
相关产品推荐

