我在github中有一个存储库,有X个分支,还有一个封闭网络中的存储库。
我需要将所有存储库移动到封闭网络上的存储库。我如何克隆所有的分支(不仅仅是默认的主分支),这样我就可以在所有分支都存在的情况下将其推送到封闭网络的分支。
输入repo二进制文件不是这里的问题。
我希望得到相同的结果,就像我克隆了我的存储库并对每个分支执行了git branch
一样,这样它就可以在本地进行初始化。
发布于 2017-07-05 21:20:18
如果不创建远程分支ref是可以的,并且克隆可以是“空的”(没有默认的工作树),那么可以使用
git clone --mirror url
但您说您希望得到与克隆相同的结果,然后检查每个分支。从字面上看,这意味着一个既有远程refs又有本地分支的非裸repo。为此,您可以执行以下操作:
首先,正常克隆并cd到新的克隆中
git clone url new-repo
cd new-repo
现在强制分离的头状态,以确保没有“当前分支”问题
git checkout `git rev-parse HEAD`
现在设置本地分支
git fetch origin +refs/heads/*:refs/heads/*
当然,现在你可以检查你应该在哪个分支上,例如
git checkout master
发布于 2017-07-05 21:25:39
曾经创造过类似的东西。希望它还能工作。也许它可以帮助你:https://github.com/srfrnk/fetch-all
发布于 2022-02-11 12:24:41
尝尝这个,
从远程获取所有分支。
Bash脚本:
#!/bin/bash
for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
git branch --track "${branch##*/}" "$branch"
done
或
单行代码:
git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs
https://stackoverflow.com/questions/44924522
复制相似问题