关于github:Github克隆所有分支一次

Git Hub Clone All Branches At Once

我正在尝试使用Linux将整个存储库克隆到我的机器上。我用过

1
git clone <url>

然后我进入下载和输入的文件夹

1
git branch

在终点站。它只显示master,而不显示远程存储库中的其他分支。如何克隆所有分支?

我知道对于遥控器中的每个分支,我都可以单独使用

1
git checkout -b <name of local branch> origin/<name of remote branch>

但是还有别的办法吗?


(1)在Git本地收回中,创建一个新的sh文件

1
2
touch getAllBranches.sh
vi getAllBranches.sh

(2)在getAllBranches.sh文件中插入以下内容:

1
2
3
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
   git branch --track ${branch#remotes/origin/} $branch
done

(3)获取所有分支:

1
2
chmod +x getAllBranches.sh    
sh getAllBranches.sh

(4)检查本地存储库的结果:

1
git branch

例如,我使用存储库:https://github.com/donhuvy/spring-boot

如您所见,已将所有分支提取到本地计算机:

enter image description here


这并不太复杂,非常简单直接的步骤如下:

克隆repo后,运行$ cd myproject

git branch -a这将显示所有远程分支。

1
2
3
4
5
6
$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental

如果要在远程分支上工作,则需要创建本地跟踪分支:

1
$ git checkout -b experimental origin/experimental

通过以下命令验证您是否在所需的分支中;

1
$ git branch

输出将像这样;

1
2
3
4
*experimental
master
some branch2
some branch3

注意表示当前分支的*符号。


It's only showing me master and not other branches which were in the remote repository. How do I clone all branches?

分支本质上是提交的指针。当您执行git clonegit fetch时,您将从远程存储库以及它的所有分支中检索所有提交。

但是,默认情况下,git branch不显示远程分支。相反,它会显示您的本地分支,这些分支可能与远程分支有任何关系,也可能与远程分支没有任何关系。如果运行git branch --all,git将报告它所知道的所有分支,包括本地分支和远程分支。

值得注意的是,标签不会以这种方式运行,本地和远程标签之间也没有区别。


1
git clone --bare <repository url goes here> .git

然后,在使用repo的所有分支克隆repo之后,执行以下操作

1
2
3
git config --bool core.bare false

git reset --hard


要下载完整的存储库(包括所有分支),请使用以下命令:江户十一〔七〕号

这将创建一个名为repository.git的文件夹,除非您给它另一个名称。

现在,这将为您提供原始存储库的完整克隆,但由于它处于bare=true模式,因此您没有工作树。实际上,您拥有的是.git文件夹,包括所有分支和内容。这是一种很花哨的说法,即您将无法直接访问这些文件,因为它们存储在Git系统中(压缩等)。

要使其成为"普通"git repo,我们需要使此克隆在新文件夹中的.git文件夹中,这将是我们通常的repo文件夹:

埃多克斯1〔12〕

注意,没有一个本地git命令来下载所有远程分支,所以最简单的方法是确保所有提交都推送到了源站,然后使用这个--mirror选项重新下载整个存储库。


我发现这是克隆Git存储库和所有远程分支的简单解决方案:

1
2
3
4
5
6
7
8
9
10
11
# Clone remote repository and all branches
git clone --mirror https://github.com/test/frontend.git frontend/.git

# Change into frontend directory
cd frontend

# Update git config
git config --unset core.bare

# Checkout master branch
git checkout master