如何通过PR审批流程完成git reset --hard操作重置master分支
问题根因
你之前的操作是将本地分支回退到了master的历史提交节点,此时你的分支提交记录完全是master提交历史的子集,Git会判定将该分支合并到master没有任何新增变更,因此无法创建有效PR。
可落地操作步骤(完全符合PR审核流程)
我们采用git revert生成反向提交的方案,不会篡改master的历史提交记录,同时可以生成PR可识别的变更:
- 第一步:同步本地master和远程master的最新状态,避免本地代码落后
git checkout master && git pull origin master - 第二步:基于最新master创建用于重置的功能分支
git checkout -b reset-master-to-d94kjf8 - 第三步:批量生成反向提交,将master从当前版本回退到目标提交d94kjf8的状态
git revert --no-edit d94kjf8..HEAD注意:如果待回退的提交范围内包含合并提交,需要额外指定父节点参数,例如针对合并提交执行
git revert -m 1 <合并提交哈希> - 第四步:将本地功能分支推送至远程仓库
git push origin reset-master-to-d94kjf8 - 第五步:前往GitHub创建PR,此时系统可以正常识别所有待回退的变更,走团队审核流程合并后,master分支的代码就会和目标提交d94kjf8完全一致。
可选方案(仅适用于允许临时生成无意义提交的团队)
如果你的团队允许提交无意义的过渡提交,也可以在reset后的分支上先做一处无关修改(比如给README加一行空行)提交,再撤销该修改提交一次,此时你的分支会比master多2条新提交,就可以正常创建PR,合并后master代码同样和目标节点一致。该方案不推荐,会产生冗余提交记录。
内容的提问来源于stack exchange,提问作者brogrammer
相关产品推荐
相关产品推荐

