git克隆所有远程分支

时间:2017-07-05 11:05:52

标签: git github git-clone

我在github中有一个存储库,其中包含X个分支和一个封闭网络中的存储库。

我需要将所有存储库移动到封闭网络上的存储库。如何克隆所有分支(而不仅仅是默认主分支),这样我就可以将其推送到存在所有分支的封闭网络分支。

输入repo二进制文件不是问题所在。

我希望得到相同的结果,就好像我克隆了我的回购并对每个分支做了git branch,所以它会在本地初始化。

3 个答案:

答案 0 :(得分:2)

如果可以创建远程分支引用,并且如果克隆可以是“裸”(没有默认工作树),则可以使用

git clone --mirror url

但是你说你希望得到与克隆相同的结果,然后检查每个分支。从字面上看,这将意味着一个非裸露的回购,它同时具有远程引用和本地分支。要做到这一点,你可以这样做:

首先,正常克隆并进入新克隆

git clone url new-repo
cd new-repo

现在强制分离头部状态以确保没有“当前分支”问题

git checkout `git rev-parse HEAD`

现在设置本地分支

git fetch origin +refs/heads/*:refs/heads/*

当然,你现在可以查看你应该使用的任何分支,例如

git checkout master

答案 1 :(得分:1)

一旦创造出类似的东西。 希望它仍然有效。 也许它可以帮助你: https://github.com/srfrnk/fetch-all

答案 2 :(得分:0)

有一个git-clone选项--mirror,用于设置所有远程跟踪的分支机构。但是,--mirror也暗示--bare选项,即。克隆将不会被创建为工作副本,您无法签出分支。因此,之后目录将更改为工作目录。

$ git clone --mirror original-repo.git /path/cloned-directory/.git
$ cd /path/cloned-directory
$ git config --bool core.bare false
$ git checkout anybranch

Git FAQ: How do I clone a repository with all remotely tracked branches?