Git中如何将分支变更集合并至另一分支且排除master合并记录?
当然可行!这里有两种常用方法帮你实现需求
方法一:使用 git cherry-pick 精准挑选提交
这种方法适合你只想迁移特定提交的场景,步骤清晰可控:
先找出
issues/bug1分支中仅属于该分支的非合并提交(也就是你需要的bug1相关变更):git log --oneline --no-merges issues/bug1 ^master这个命令会列出所有在
issues/bug1里、不在master中,且不是合并master产生的提交,每一行开头的字符串就是你需要的提交哈希ID。切换到目标分支
issues/bug5:git checkout issues/bug5把刚才找到的提交逐个“复制”到当前分支:
git cherry-pick <提交哈希1> <提交哈希2> ...- 如果遇到代码冲突,先手动解决冲突,然后执行
git cherry-pick --continue继续后续提交的迁移; - 如果想终止整个cherry-pick操作,执行
git cherry-pick --abort即可。
- 如果遇到代码冲突,先手动解决冲突,然后执行
方法二:用 git rebase 整理分支后再合并
如果issues/bug1是你个人使用的分支(没有其他开发者协作),可以先把该分支的历史整理成干净的线性记录,再合并到issues/bug5:
切换到
issues/bug1分支:git checkout issues/bug1基于
master分支重新整理提交,这一步会自动移除所有合并master的记录,把你的bug1相关提交重放在master最新提交的后面:git rebase master- 若遇到冲突,解决后执行
git rebase --continue,或者用git rebase --abort终止操作。
- 若遇到冲突,解决后执行
切换回
issues/bug5分支,合并整理后的issues/bug1:git checkout issues/bug5 git merge issues/bug1
⚠️ 重要提醒:如果issues/bug1已经推送到远程仓库且有其他开发者在使用,不要用rebase方法——因为rebase会修改分支的历史记录,可能导致其他人的本地分支与远程仓库版本不一致。这种情况下,用cherry-pick更安全。
内容的提问来源于stack exchange,提问作者lordhog
相关产品推荐
相关产品推荐

