我克隆了一个包含许多分支的Git存储库。然而,git分支仅显示一个:

$ git branch
* master

我如何在本地拉所有分支,所以当我执行git分支时,它会显示以下内容?

$ git branch
* master
* staging
* etc...

当前回答

克隆存储库时,实际上会下载分支的所有信息,但分支是隐藏的。使用命令

$ git branch -a

您可以显示存储库的所有分支,并使用以下命令

$ git checkout -b branchname origin/branchname

然后,您可以一次手动下载一个。


然而,有一种更干净、更快的方法,尽管它有点复杂。您需要三个步骤来实现这一点:

第一步在计算机上创建一个新的空文件夹,并从存储库克隆.git文件夹的镜像副本:$cd~/桌面&&mkdir my_repo_folder&&cd my_repo-folder$git克隆--镜像https://github.com/planetoftheweb/responsivebootstrap.git.git位myepofolder文件夹中的本地存储库仍然是空的,现在只有一个隐藏的.git文件夹,您可以通过终端的“ls-alt”命令看到它。第二步通过将git配置的布尔值“裸”切换为false,将此存储库从空(裸)存储库切换为常规存储库:$git-config--bool core.bare false第三步获取当前文件夹中的所有内容,并在本地计算机上创建所有分支,因此这是一个正常的回购。$git重置--硬

现在您只需键入命令gitbranch,就可以看到所有的分支都已下载。

这是一种快速的方法,您可以一次克隆一个包含所有分支的git存储库,但这不是您想用这种方法为每个项目做的事情。

其他回答

$ git remote update
$ git pull --all

这假设所有分支都被跟踪。

如果他们不是,你可以在Bash中发射这个:

for remote in `git branch -r `; do git branch --track $remote; done

然后运行命令。

注意:请阅读下面的警告注释。

尝试了很多方法,只有这一个简单,对我有用。

for branch in $(git ls-remote -h git@<your_repository>.git | awk '{print $2}' | sed 's:refs/heads/::')
do
  git checkout "$branch"
  git pull
done

使用git fetch和git checkout RemoteBranchName。

这对我来说很好。。。

如果您在fetch-all方面遇到问题,请跟踪远程分支:

git checkout --track origin/%branchname%

我用这个命令拉动原点分支,git拉动原点