如何将Master分支中featureA、featureB变更作为单commit合入release分支
操作步骤
1. 提取featureA、featureB的提交哈希
两个功能的提交已合并到Master分支,直接在Master分支查询提交日志即可,无需使用reflog:
# 切换到本地Master分支,同步远程最新内容 git checkout master git pull origin master # 打印简洁版提交日志,找到featureA、featureB对应的所有提交哈希并记录 # 若PR是squash合并,每个PR仅对应1个提交;若为普通合并,对应多个提交,需全部按时间顺序记录 git log --oneline
你也可以直接在代码托管平台的已合并PR详情页,直接复制该PR包含的所有提交哈希,效率更高。
2. 创建releaseAB分支并遴选提交
基于最新release分支创建目标分支:
# 切换到release分支,同步远程最新内容 git checkout release git pull origin release # 创建并切换到releaseAB分支 git checkout -b releaseAB
按时间从早到晚的顺序,将记录的featureA、featureB提交遴选到当前分支:
# 将尖括号内容替换为你记录的提交哈希,多个哈希按时间先后依次排列即可 git cherry-pick <featureA最早提交哈希> <featureA其他提交哈希> <featureB最早提交哈希> <featureB其他提交哈希>
若遴选过程中出现冲突,解决冲突后执行git add .,再运行git cherry-pick --continue即可继续执行。
3. 合并为单个提交
将releaseAB上新增的所有feature相关提交压缩为1个:
# 查询当前releaseAB分支比release分支多的提交数量,记为n git log --oneline release..releaseAB # 执行交互式变基,n替换为上一步查到的提交数量 git rebase -i HEAD~n
弹出的编辑界面中,将除第一个提交外其他所有提交前的pick修改为s(squash的缩写),保存退出后编辑提交信息,再次保存即可完成提交合并。
4. 推送分支创建PR
将本地分支推送到远程仓库后即可创建PR:
git push origin releaseAB
内容的提问来源于stack exchange,提问作者ketan
相关产品推荐
相关产品推荐

