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

如何将Git镜像克隆的仓库转换为可推拉的普通仓库?

解决方案:将镜像克隆的裸仓库转为可追踪源仓库的普通仓库

你提到的手动修改配置的思路是完全可行的,这正是把镜像克隆的裸仓库转换成能正常执行pull/push、追踪源仓库的常规仓库的标准操作。具体操作步骤如下:

  1. 修改仓库核心配置,关闭裸仓库模式
    编辑.git/config文件,将[core]下的bare = true改为bare = false:

    [core]
        bare = false
    
  2. 调整远程仓库配置,移除镜像模式并设置常规fetch规则
    同样在.git/config中,修改[remote "origin"]段:

    • 删除mirror = true
    • 将fetch = +refs/*:refs/*替换为常规的分支追踪规则:
      [remote "origin"]
          fetch = +refs/heads/*:refs/remotes/origin/*
      
  3. 拉取远程分支并建立本地追踪
    保存配置后,执行以下命令拉取所有远程分支,并将本地分支与对应远程分支绑定:

    git fetch origin
    # 为每个远程分支创建对应的本地分支并追踪
    for branch in $(git branch -r | grep -v '\->'); do
        git branch --track "${branch##origin/}" "$branch"
    done
    

为什么你之前的命令没生效?

  • git remote set-url origin my-url仅修改远程仓库的地址,不会变更mirror或fetch这类行为配置;
  • git push --mirror是用于向远程推送所有引用(分支、标签等)的推送命令,不会修改本地仓库的配置项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:10:48