首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >git克隆所有远程分支

git克隆所有远程分支
EN

Stack Overflow用户
提问于 2017-07-05 19:05:52
回答 4查看 6.4K关注 0票数 1

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

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

输入repo二进制文件不是这里的问题。

我希望得到相同的结果,就像我克隆了我的存储库并对每个分支执行了git branch一样,这样它就可以在本地进行初始化。

EN

回答 4

Stack Overflow用户

发布于 2017-07-05 21:20:18

如果不创建远程分支ref是可以的,并且克隆可以是“空的”(没有默认的工作树),那么可以使用

代码语言:javascript
运行
复制
git clone --mirror url

但您说您希望得到与克隆相同的结果,然后检查每个分支。从字面上看,这意味着一个既有远程refs又有本地分支的非裸repo。为此,您可以执行以下操作:

首先,正常克隆并cd到新的克隆中

代码语言:javascript
运行
复制
git clone url new-repo
cd new-repo

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

代码语言:javascript
运行
复制
git checkout `git rev-parse HEAD`

现在设置本地分支

代码语言:javascript
运行
复制
git fetch origin +refs/heads/*:refs/heads/*

当然,现在你可以检查你应该在哪个分支上,例如

代码语言:javascript
运行
复制
git checkout master
票数 3
EN

Stack Overflow用户

发布于 2017-07-05 21:25:39

曾经创造过类似的东西。希望它还能工作。也许它可以帮助你:https://github.com/srfrnk/fetch-all

票数 1
EN

Stack Overflow用户

发布于 2022-02-11 12:24:41

尝尝这个,

从远程获取所有分支。

Bash脚本:

代码语言:javascript
运行
复制
#!/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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44924522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档