You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git push --mirror同步GitHub到CodeCommit报错:拒绝删除默认分支master

问题原因分析

git push --mirror的核心作用是让远程仓库和本地仓库完全一致——它会推送本地所有分支、标签到远程,同时删除远程存在但本地没有的所有refs。

你切换到preprod分支后触发报错,是因为:

  1. AWS CodeCommit仓库的默认分支是master
  2. 此时你的本地仓库中可能没有master分支(或本地master分支被移除/标记为待删除),--mirror会尝试让远程同步这个状态,也就是删除远程的master分支
  3. CodeCommit禁止删除当前设置的默认分支,因此抛出拒绝删除的错误
解决方法

根据你的需求,有几种可选方案:

方案1:替换--mirror为非镜像推送(推荐)

如果你的目标只是同步本地所有分支和标签到CodeCommit,不需要删除远程已有的分支(比如保留master),可以把git push sync --mirror替换成两条命令:

git push sync --all
git push sync --tags

--all会推送本地所有分支,--tags推送所有标签,且不会删除远程已有的分支,完美避开默认分支无法删除的限制。

方案2:修改CodeCommit的默认分支

如果你确实需要用--mirror,且希望preprod成为默认分支,可以在AWS控制台修改CodeCommit仓库的默认分支:

  • 进入CodeCommit仓库页面
  • 点击「Settings」→「Branch settings」
  • 把默认分支改成preprod
    之后再执行git push sync --mirror就不会触发删除master的操作(如果本地仍保留master分支),或者允许删除master(如果本地已移除)。

方案3:确保本地始终保留master分支

如果必须用--mirror,且要保留master作为默认分支,在执行push前先确保本地存在master分支:

git fetch sync master
git checkout master
git checkout preprod  # 切回你需要的分支
git push sync --mirror

这样本地有master分支,--mirror就不会尝试删除远程的master,同步就能正常完成。

内容的提问来源于stack exchange,提问作者Eva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 10:33:58