如何在分支名相同的两个Git仓库间自动同步指定分支并覆盖变更
Git指定分支强制同步方案
原有方案问题说明
你之前使用的--mirror参数会同步仓库全量引用(包含所有分支、标签、合并请求引用等),无法过滤指定分支,且默认推送不带强制覆盖参数,目标分支存在未同步的冲突提交时就会报错。
分步执行方案
第一步:初始化同步工作目录(仅需执行一次)
# 克隆源仓库到本地工作目录 git clone https://github.com/org/repo-1.git git-sync-workdir cd git-sync-workdir # 添加目标仓库为远端节点,命名为target方便后续调用 git remote add target https://host.com/org/repo-2
第二步:单/多分支同步命令
将下方命令中的分支名替换为你需要同步的分支即可,命令内置强制覆盖逻辑,会直接覆盖目标仓库的冲突变更:
# 1. 拉取源仓库指定分支的最新代码 git fetch origin main dev release/v1.0 # 2. 强制推送指定分支到目标仓库,自动覆盖冲突 git push -f target \ refs/remotes/origin/main:refs/heads/main \ refs/remotes/origin/dev:refs/heads/dev \ refs/remotes/origin/release/v1.0:refs/heads/release/v1.0
可选优化配置
- 如果需要同步对应分支的标签,可在fetch命令后加上
--tags参数,push命令也同步加上--tags - 如果需要自动删除目标仓库中、已在源仓库删除的指定分支,可在push命令中加上
--prune参数 - 上述命令可直接写入定时任务或CI/CD流水线实现自动同步,无需人工干预
内容的提问来源于stack exchange,提问作者krintax
相关产品推荐
相关产品推荐

