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

$ git branch
* master

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

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

当前回答

要列出远程分支,请执行以下操作:

git branch -r

要将远程分支签出为本地分支,请执行以下操作:

git checkout -b local_branch_name origin/remote_branch_name

其他回答

您需要创建跟踪远程分支的本地分支。

假设您只有一个名为origin的远程,此代码片段将为所有远程跟踪分支创建本地分支:

for b in `git branch -r | grep -v -- '->'`; do git branch --track ${b##origin/} $b; done

之后,gitfetch-all将更新远程分支的所有本地副本。

此外,gitpull-all将更新您的本地跟踪分支,但根据您的本地提交以及“合并”配置选项的设置方式,它可能会创建一个合并提交、快进或失败。

确保所有远程分支都可以在.git/config文件中获取。

在本例中,只有原始/生产分支是可获取的,即使您尝试执行git fetch,除了获取生产分支之外,一切都不会发生:

[origin]
fetch = +refs/heads/production:refs/remotes/origin/production

该行应替换为:

[origin]
fetch = +refs/heads/*:refs/remotes/origin/*

然后运行git fetch等。。。

设置别名:(基于顶部答案)

git config --global alias.track-all-branches '!git fetch --all && for remote in `git branch -r`; do git branch --track ${remote#origin/} $remote; done && git fetch --all'

现在要跟踪所有分支:

git跟踪所有分支

$ git remote update
$ git pull --all

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

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

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

然后运行命令。

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

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