如何将master分支的改动迁移至dev分支并重新提交Pull Request?
把Master分支的改动迁移到Dev分支并重新提交PR
别担心,这种操作失误太常见了,按下面的步骤一步步来就能搞定:
第一步:确保本地仓库与原仓库同步
先把本地代码更新到最新状态,避免后续迁移时踩冲突坑:
- 切换到本地
master分支:git checkout master - 拉取原仓库(通常命名为
upstream)的最新master代码:git pull upstream master - 切换到本地
dev分支:git checkout dev - 同样拉取原仓库的最新
dev代码:git pull upstream dev
第二步:迁移改动到Dev分支
根据你在master上的提交数量,分两种场景处理:
场景1:Master上只有1个提交
用cherry-pick直接复制这个提交到dev最省心:
- 先找要迁移的提交哈希值(用
git log查看,复制那串7位或更长的字符) - 确保当前在
dev分支,执行:git cherry-pick <你的提交哈希值> - 如果碰到冲突,手动修改冲突文件后执行:
要是不想继续了,用git add <冲突文件名> git cherry-pick --continuegit cherry-pick --abort回退就行。
场景2:Master上有多个连续提交
如果是一串连续的提交,用rebase迁移更高效:
- 先找到这串提交起始提交的前一个哈希值(比如你有3个提交,找第一个提交之前的那个commit hash,
git log里能看到) - 执行rebase命令,把
master上从这个起始点之后的所有提交迁移到dev分支:git rebase --onto dev <起始提交的前一个哈希值> master - 遇到冲突的话,解决后执行:
回退用git add <冲突文件名> git rebase --continuegit rebase --abort。 - 完成rebase后,切换回
dev分支,同步rebase后的内容:git checkout dev git reset --hard master
第三步:推送Dev分支到你的Fork仓库
把本地更新后的dev分支推送到自己的fork仓库:
git push origin dev
如果之前你的dev分支已经推过,可能需要强制推送(注意:只有你自己在这个分支工作时才用,别覆盖别人的改动):
git push origin dev --force
第四步:重新提交PR并关闭旧PR
- 打开GitHub,进入你的fork仓库,切换到
dev分支,点击"Compare & pull request"按钮,选择原仓库的dev分支作为目标分支,提交新的PR。 - 找到之前针对
master分支的旧PR,在页面点击"Close pull request"按钮;或者在新PR的描述里加上closes #<旧PR编号>,这样合并新PR时会自动关闭旧PR。
内容的提问来源于stack exchange,提问作者kikik kakik
相关产品推荐
相关产品推荐

