Git变基操作前,如何验证不存在已共享的提交?
Git仓库历史保护与变基检测脚本需求
- 基于Git的基准仓库历史绝对不可重写
- 贡献者可自由重写未共享的本地历史;但基准仓库会拒绝任何推送导致分支回退的历史重写操作
- 为避免用户推送后才发现问题、需要撤销变基的麻烦,我们开发了可手动运行的脚本,用于变基操作执行前检测涉及已共享提交的禁止性变基
脚本扩展检测需求
除了检测已共享提交的变基,我们还希望脚本覆盖更多场景:
比如存在分支层级:本地分支feature基于共享分支refactor,refactor又基于共享分支main。当需要优先发布feature而非refactor时,若执行错误命令 git rebase main feature,会将feature中所有不在main的提交(包括feature祖先中来自refactor的提交)全部变基;正确的操作应该是执行 git rebase refactor feature --onto main。
- 仅检测
refs/remotes/*/feature的存在无法识别该场景,因为此场景下该远程引用并不存在
内容的提问来源于stack exchange,提问作者Pierre Lebeaupin
相关产品推荐
相关产品推荐

