Git Hub一次克隆所有分支

时间:2016-10-28 18:13:51

标签: git github

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

git clone <url>   

然后我进入了下载和输入

的文件夹
git branch 

在终端。它只显示我的主人,而不是显示在远程存储库中的其他分支。如何克隆所有分支?

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

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

但除此之外还有其他方法吗?

7 个答案:

答案 0 :(得分:40)

(1)在git local repostitory中,创建一个新的sh文件

touch getAllBranches.sh
vi getAllBranches.sh

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

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

(3)获取所有分支:

chmod +x getAllBranches.sh    
sh getAllBranches.sh

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

git branch

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

正如您所看到的,我已经将所有分支机构提取到本地机器:

enter image description here

答案 1 :(得分:35)

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

克隆回购后,运行$ cd myproject

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

$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental

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

$ git checkout -b experimental origin/experimental

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

$ git branch

输出会是这样的;

*experimental
master
some branch2
some branch3 

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

答案 2 :(得分:12)

  

它只显示我的主人,而不是显示在远程存储库中的其他分支。如何克隆所有分支?

分支实际上是提交的指针。当您执行git clone(或git fetch)时,您将从远程存储库及其所有分支中检索所有提交。

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

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

答案 3 :(得分:10)

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

然后在repo克隆其所有分支后再执行以下操作

git config --bool core.bare false

git reset --hard

答案 4 :(得分:1)

要下载完整的存储库,包括所有分支,请使用以下命令: git clone --mirror <URI>

这将创建一个名为repository.git的文件夹,除非您使用其他名称。

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

要将其设为“常规” git存储库,我们需要将此克隆复制到新文件夹中的.git文件夹中,该文件夹将成为我们通常的repo文件夹:

mkdir <repo folder name> mv repository.git <repo folder name>/.git cd <repo folder name> git checkout master

请注意,没有单个本地git命令可以下载所有远程分支,因此最简单的方法是确保已将所有提交推送到源,然后使用--mirror选项重新下载整个存储库

答案 5 :(得分:0)

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

# 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

答案 6 :(得分:0)

  1. git clone --bare https://repo.git projectName
  2. cd projectName
  3. git push --mirror https://repo.git https://help.github.com/en/articles/duplicating-a-repository

    这使您的仓库完全相同。