我正在尝试使用linux将整个存储库克隆到我的机器上。我用了
git clone <url>
然后我进入了下载和输入
的文件夹git branch
在终端。它只显示我的主人,而不是显示在远程存储库中的其他分支。如何克隆所有分支?
我知道对于遥控器中的每个分支我都可以单独使用
git checkout -b <name of local branch> origin/<name of remote branch>
但除此之外还有其他方法吗?
答案 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
正如您所看到的,我已经将所有分支机构提取到本地机器:
答案 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)
git clone --bare https://repo.git projectName
cd projectName
git push --mirror https://repo.git https://help.github.com/en/articles/duplicating-a-repository
这使您的仓库完全相同。