Git合并已回滚PR中部分提交及分支操作相关问题咨询
问题解答
分支重命名方案可行性
该方案可满足你将C分支内容作为新master分支的短期需求,落地需要满足两个前提:
- 你拥有仓库的分支删除、新建权限,可删除原有master分支,将重命名后的C分支推送为新的master分支
- 你需要同步所有仓库协作者,要求其本地master分支重置为远端新的master分支,避免旧master分支的提交被误推回远端
重命名后合并B分支的潜在问题
- 新master(原C分支)的提交历史和原develop分支(B)没有公共的提交锚点,后续合并B到新master时,Git会将B的全部200个commit识别为新变更,出现大量冲突,无法依赖自动合并能力,需要人工逐一排查
- 原有旧master分支上除被回滚PR之外的其他提交会全部丢失,后续需要追溯历史时只能到重命名后的D分支查找,提升溯源成本
Azure Git分支策略绑定规则
Azure DevOps的Git分支策略是绑定分支名称匹配规则,而非具体的分支实体。只要分支名称符合你配置的分支过滤器(比如master、releases/*这类规则),对应的策略就会自动生效,你重命名分支后,新的master分支会自动继承原有所有管控策略,无需重新配置。
更适配权限限制的替代方案
不需要强制推送master分支,也不需要重命名分支,可通过修改C分支提交元信息的方式绕过历史合并检测:
- 本地拉取最新的master分支和1.3版本发布分支(C)
- 执行命令切换到C分支:
git checkout <C分支名> - 执行变基命令:
git rebase -i master,在弹出的交互编辑页中把C分支独有的1个commit前的pick修改为edit,保存并退出 - 执行命令修改提交元信息:
git commit --amend --no-edit,该操作会生成内容和原C提交完全一致、但哈希值完全不同的新提交 - 执行命令完成变基:
git rebase --continue,得到新的C'分支 - 推送C'分支到远端后提交PR到master,此时Git会识别到这是从未合并过的全新提交,不会被之前的合并、回滚记录影响
内容的提问来源于stack exchange,提问作者bshirley
相关产品推荐
相关产品推荐

