如何将Git镜像克隆的仓库转换为可推拉的普通仓库?
解决方案:将镜像克隆的裸仓库转为可追踪源仓库的普通仓库
你提到的手动修改配置的思路是完全可行的,这正是把镜像克隆的裸仓库转换成能正常执行pull/push、追踪源仓库的常规仓库的标准操作。具体操作步骤如下:
修改仓库核心配置,关闭裸仓库模式
编辑.git/config文件,将[core]下的bare = true改为bare = false:[core] bare = false调整远程仓库配置,移除镜像模式并设置常规fetch规则
同样在.git/config中,修改[remote "origin"]段:- 删除
mirror = true - 将
fetch = +refs/*:refs/*替换为常规的分支追踪规则:[remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/*
- 删除
拉取远程分支并建立本地追踪
保存配置后,执行以下命令拉取所有远程分支,并将本地分支与对应远程分支绑定: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
相关产品推荐
相关产品推荐

