Git最佳实践:如何迁移个人提交至master且排除test分支他人变更
将特定提交迁移到Master分支的最佳实践
方法1:用git cherry-pick迁移单/少量提交
适合提交数量不多的场景,精准挑选自己的提交迁移:
- 切换到master分支并拉取最新代码:
git checkout master git pull origin master - (可选但推荐)基于最新master创建新分支,避免直接修改master:
git checkout -b my-feature-clean - 查看你的开发分支提交记录,找出自己的所有提交哈希(用
git log --oneline或Git可视化工具均可) - 逐个或批量挑选提交到新分支:
git cherry-pick 提交哈希1 提交哈希2 ...- 若遇到冲突,解决冲突后执行
git cherry-pick --continue;想终止操作则用git cherry-pick --abort
- 若遇到冲突,解决冲突后执行
- 切换回master,合并干净分支:
git checkout master git merge my-feature-clean - 推送到远程仓库:
git push origin master
方法2:用git rebase --onto批量迁移提交
适合提交数量较多,且希望保持提交历史线性的场景:
- 找到你的开发分支基于test分支创建时的「起点提交哈希」:也就是你开发分支第一个提交的父提交(可通过
git log --oneline my-dev-branch查看定位) - 切换到你的开发分支:
git checkout my-dev-branch - 执行rebase,将你的所有提交迁移到master分支上:
git rebase --onto master 起点提交哈希- 这句命令的作用是:把「起点提交哈希」之后的所有提交(即你自己的开发提交),重新放到master分支的最新版本之上
- 遇到冲突时,解决冲突后执行
git add .,再用git rebase --continue;终止操作则用git rebase --abort - 切换回master合并分支:
git checkout master git merge my-dev-branch - 推送到远程仓库:
git push origin master
注意事项
- 操作前务必备份你的开发分支:
git branch my-dev-branch-backup,防止操作失误丢失提交 - 如果你的开发分支已经推送到远程,执行rebase后需要强制推送(
git push -f origin my-dev-branch),但要确保没有其他同事在这个分支上工作 - 两种方法都能避免引入test分支上其他同事的变更,因为只迁移了你自己的提交
内容的提问来源于stack exchange,提问作者younes
相关产品推荐
相关产品推荐

