如何获取所有Git分支


1506

我克隆了一个Git存储库,其中包含大约五个分支。但是,当我这样做时,git branch我只会看到其中之一:

$ git branch
* master

我知道可以git branch -a看到所有分支,但是如何在本地拉出所有分支,所以当git branch显示时,它显示以下内容?

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


2
此问题说明了--single-branch在克隆时使用设置后如何获取所有分支:stackoverflow.com/questions/17714159/…git fetch --all如果仅指定一个分支,将永远无法工作!)
Matthew Wilcoxson 2015年

2
您永远不会看到该输出,因为星号表示当前正在检出的分支。由于一次只能签出一个分支,因此分支列表的左侧只能有一个星号。
Robino

5
我看到了很多答案,但是没有一个答案提到我认为可能是最简单的方法:(请 git clone --bare <repo url> .git 注意,您需要在末尾添加“ --bare”和“ .git”以将存储库克隆为然后,将“裸”回购)git config --bool core.bare false(将“裸”标志设置为false),然后git reset --hard(将HEAD移至该回购上的当前HEAD)。现在,如果您git branch应该看到克隆的仓库中的所有分支。
加布里埃尔·费拉兹

4
@GabrielFerraz然后,您将在Stack Overflow上使用注释功能。用户可以投票赞成您的评论,但不能投票反对。
管道

Answers:


2049

您可以像这样从所有遥控器获取所有分支:

git fetch --all

从根本上讲,这是一种动力

fetch更新远程分支的本地副本,因此这对于您的本地分支始终是安全的,

  1. fetch不会更新本地分支(跟踪远程分支);如果要更新本地分支,则仍然需要拉出每个分支。

  2. fetch不会创建本地分支(跟踪远程分支),您必须手动执行此操作。如果要列出所有远程分支: git branch -a

更新跟踪远程分支的本地分支:

git pull --all

但是,这可能仍然不够。它仅适用于跟踪远程分支机构的本地分支机构。要跟踪所有远程分支,请在执行以下操作之前 执行以下操作git pull --all

git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done

TL; DR版本

git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all

(看来pull可以从所有远程获取所有分支,但是为了确保我总是总是先获取。)

仅当服务器上有本地分支未跟踪的远程分支时,才运行第一个命令。

PS AFAIK git fetch --allgit remote update等效。



卡米尔·索佐特(Kamil Szot)的评论,对此人们是有用的。

我不得不使用:

for remote in `git branch -r`; do git branch --track ${remote#origin/} $remote; done

因为您的代码创建了名为的本地分支,origin/branchname并且在我每次引用它时,我都得到“ refname'origin / branchname'的含义不明确。


41
抱歉。我无法想象这是OP真正想要的。'pull'命令是'fetch + merge',合并部分将所有分支重叠在一起-留下一个巨大的混乱。
GoZoner 2012年

10
取指不会造成您仍然需要检查出来一个新的远程分支git checkout -b localname remotename/remotebranch
Learath2

125
我不得不用 for remote in `git branch -r`; do git branch --track ${remote#origin/} $remote; done ,因为你的代码创建了一个名为起点/ BRANCHNAME当地分支机构和我得到“refname‘产地/ BRANCHNAME’不明确每当我提到了它。
卡米尔Szot

22
我不知道我是否在使用其他版本的GIT,但是我不得不将脚本修改为git pull --all; for remote in `git branch -r | grep -v \>`; do git branch --track ${remote#origin/} $remote; done。更改去除了HEAD。
kim3er 2013年

16
Windows使用者:for /F %remote in ('git branch -r') do ( git branch --track %remote) && git fetch --all && git pull --all
最多

717

列出远程分支机构:
git branch -r

您可以使用以下方法将其作为本地分支签出:
git checkout -b LocalName origin/remotebranchname


88
这正是我发现上述问题时一直在寻找的东西。我怀疑有很多人在寻找如何拉远程分支的方法,当然不想将其合并到当前工作副本中,但是他们确实希望有一个与远程分支相同的本地分支。
Frug 2012年

11
即使该分支在本地不可见,我也可以这样做git checkout remotebranchname并且可以工作。您的解决方案有什么区别?
弗朗索瓦·罗曼

12
现在是其默认行为。较旧的git版本不是这种情况。使用git checkout remotebranchname只是创建一个新的不相关的分支,该分支名为remotebranchname
Learath2

12
接受的答案做了fundamentaly不同的,坦率地说我甚至不明白为什么它接受的答案
Learath2

8
OP要求所有分支机构。这个答案只能做一个。
Ted Bigham '16

193

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

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

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

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

另外,git pull --all将更新您的本地跟踪分支,但是取决于您的本地提交以及“ merge”配置选项的设置方式,它可能会创建合并提交,快速转发或失败。


5
这可以使解决方案针对包含外壳元字符的分支名称(根据pinkineen在另一个答案上的评论)来解决,并避免了错误输出:git branch -r | grep -v-'->'| 在远程阅读时 做git branch --track“ $ {remote#origin /}”“ $ remote” 2>&1 | grep -v'已经存在'; 完成
Daira Hopwood,2015年

6
您确定git pull --all会更新所有本地跟踪分支吗?据我所知,它仅更新所有远程站点的当前分支。
安迪

3
做过这个。没有创建与远程分支匹配的本地分支。什么是git命令,简单地说:“如果不存在,则将所有远程分支都创建本地分支。”
JosephK

@JosephK也许您的遥控器没有被调用origin?请参阅此答案该答案适用于所有远程名称。
汤姆·黑尔

@TomHale这是“起源”,但是感谢您的回答-尽管很疯狂,但要做一个或两个标志的必要性很多。我现在正在尝试gitless,以避免git某些方面的精神错乱。
JosephK '18

116

如果您这样做:

git fetch origin

然后他们将在当地所有。如果执行以下操作:

git branch -a

您会看到它们列为remotes / origin / branch-name。由于他们在本地,因此您可以随心所欲地做任何事情。例如:

git diff origin/branch-name 

要么

git merge origin/branch-name

要么

git checkout -b some-branch origin/branch-name

5
刚刚在Google上找到此页面...这是我正在寻找的实际答案类型。我尝试了第一个命令,但收到一个错误:[$ git fetch --all origin致命:fetch --all不带存储库参数] ---使用“ git fetch --all”似乎可以解决问题。感谢您的带头!
隆达

1
已修正(已淘汰--all
GoZoner 2013年

12
git fetch -all获取所有遥控器的所有分支。 git fetch origin获取远程服务器的所有分支origin。稍后是OP的要求。
GoZoner 2013年

3
--all表示“所有遥控器”,而不是“给定遥控器的所有分支”。从远程进行的任何获取都暗含了后者。
spacediver 2013年

2
这不是将所有分支从远程仓库拉入本地仓库的方法。
弗拉基米尔·德斯波托维奇

69
$ git remote update
$ git pull --all

假定所有分支都已跟踪。

如果不是,则可以在Bash中触发:

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

然后运行命令。


3
当我尝试时,我仍然得到与上述相同的结果。
David542

4
和@JacobLowe一样,我得到了错误,但是无论如何它仍然有效。'致命:已经存在一个名为'起源/母版'的分支。
AnneTheAgile 2014年

这很丑陋,因为它将尝试创建一个分支,->该分支可能会git branch -r以`origin / HEAD-> origin / master` 的输出形式存在
Tom Hale

而且,它不起作用。我得到输出:Branch 'origin/quote-filenames' set up to track local branch 'master'. 所需的输出是:Branch 'quote-filenames' set up to track remote branch 'quote-filenames' from 'origin'. 这是向后的,将原点设置为跟踪遥控器。请参阅此答案以获取修复。
汤姆·黑尔

正是我所需要的。自从我切换了Mac以来,即使克隆了回购协议,我也无法签出其他远程分支,git fetch也无法正常工作。因此,这里的课程是您需要跟踪远程分支。格拉西亚斯!
维克多·拉莫斯

58

Bash for循环对我不起作用,但这确实达到了我想要的目的。我起源的所有分支在本地镜像为相同名称。

git checkout --detach
git fetch origin '+refs/heads/*:refs/heads/*'

请参阅下面的Mike DuPont的评论。我认为我正在尝试在Jenkins服务器上执行此操作,从而使其处于脱机模式。


6
fatal: Refusing to fetch into current branch refs/heads/master of non-bare repository经过简单的克隆即可产生。必须先卸下头部。我这样做的原因是git checkout <SHA>
brannerchinese 2015年

6
我的解决方案是git checkout --detach # detach the headgit fetch origin \'+refs/heads/*:refs/heads/*
Mike DuPont

1
这对我有用,除了我也使用--tags参数。我希望有一个标准的,简单的git前端,git中需要10个以上堆栈溢出答案的简单事物的数量是荒谬的!
kristianp '16

1
@kristianp您检查过Ungit或GitKraken吗?
dragon788 '16

@ dragon788我一直在使用SourceTree作为git GUI,但我实际上是在谈论用于脚本编写任务的更简单的命令行。
kristianp '16

51

使用git fetch && git checkout RemoteBranchName

对我来说很好


6
大家好,这是新的最佳答案。我不知道以前是否不可能,但是最近版本的Git至少会注意到您正在尝试签出一个远程分支,并会自动为您设置本地跟踪分支(并且您不需要指定origin/branch;只说就足够了branch)。
尼尔·特拉夫特

9
这不能回答原始问题:“我将如何在本地拉所有分支?” 它正在一对一地拉动它们,这是不可扩展的。
ingyhere

这是唯一使我能够在遇到的每种情况下都拉远程分支机构的答案
Emmanuel Buckshi '17

38

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

$ git branch -a

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

$ git checkout -b branchname origin/branchname

您可以一次手动“下载”它们。


但是,虽然有点复杂,但是有一种更干净,更快捷的方法。您需要完成以下三个步骤:

  1. 第一步

    在您的机器上创建一个新的空文件夹,并从存储库中克隆.git文件夹的镜像副本:

    $ cd ~/Desktop && mkdir my_repo_folder && cd my_repo_folder
    $ git clone --mirror https://github.com/planetoftheweb/responsivebootstrap.git .git
    

    文件夹my_repo_folder内的本地存储库仍然为空,现在只有一个隐藏的.git文件夹,您可以从终端使用“ ls -alt”命令查看该文件夹。

  2. 第二步

    通过将git配置的布尔值“ bare”切换为false,将此存储库从空(裸)存储库切换为常规存储库:

    $ git config --bool core.bare false
    
  3. 第三步

    抓取当前文件夹内的所有内容,并在本地计算机上创建所有分支,因此将其作为常规存储库。

    $ git reset --hard
    

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

这是一种可以一次克隆所有分支的git存储库的快速方法,但是您不想以此方式对每个项目进行操作。


1
因提及隐藏的分支而被投票。帮助我极大地了解了本地分支机构的跟踪情况。
mburke05 '17

这是一个很好的答案,但是这个问题意味着每天都要使用一些东西。每次都克隆存储库是不切实际的。
Z. Khullah'3

为什么重置会在本地创建所有分支?
Z. Khullah'3

@ Z.Khullah不是重置会创建所有分支,而是克隆--mirror。对于我们来说不幸的是,这也创建了一个裸仓库,这就是步骤2和3更改的地方。
ScottJ

29

您可以通过以下方式获取所有分支:

git fetch --all

要么:

git fetch origin --depth=10000 $(git ls-remote -h -t origin)

--depth=10000如果您已使存储库变浅,则该参数可能会有所帮助。


要拉出所有分支,请使用:

git pull --all

如果上述方法不起作用,请在上述命令之前加上以下命令:

git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

因为remote.origin.fetch在获取时可能仅支持特定分支,尤其是当您使用克隆仓库时--single-branch。通过以下方式进行检查:git config remote.origin.fetch

之后,您应该可以签出任何分支。

也可以看看:


要将所有分支推送到远程,请使用:

git push --all

最终--mirror反映所有裁判。


如果您的目标是复制存储库,请参阅:在GitHub上复制存储库文章。


1
太棒了...在此页中您尝试解决方案之前,我尝试了其他所有方法。非常感谢!
Sujoy

2
我使用了浅层克隆(depth=1),并且配置还为该对象指定了一个特定的分支fetch-该depth=1000参数是帮助我检出特定的远程分支的修补程序
Sandra

2
pull --all不会拉开所有分支,而是拉开所有遥控器
Z. Khullah

配置不错,但是!会一直取回它们
Z. Khullah '18

我在编写时检查了config,但仍仅适用于当前分支。似乎这里的所有答案都不适合我...
Alexei Martianov,

25

我通常只使用以下命令:

git fetch origin
git checkout --track origin/remote-branch

简短一点:

git fetch origin
git checkout -t origin/remote-branch

17

我相信您已经通过以下方式克隆了存储库:

git clone https://github.com/pathOfrepository

现在使用cd转到该文件夹​​:

cd pathOfrepository

如果键入,git status您可以看到所有内容:

   On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

要查看所有隐藏的分支类型:

 git branch -a

它将列出所有远程分支。

现在,如果您想在任何特定分支上签出,只需键入:

git checkout -b localBranchName origin/RemteBranchName

16

如果您在这里寻求一种解决方案来获取所有分支,然后将所有内容迁移到另一台Git服务器,那么我将执行以下过程。如果只想在本地更新所有分支,请在第一个空行处停止。

git clone <ORIGINAL_ORIGIN>
git branch -r | awk -F'origin/' '!/HEAD|master/{print $2 " " $1"origin/"$2}' | xargs -L 1 git branch -f --track 
git fetch --all --prune --tags
git pull --all

git remote set-url origin <NEW_ORIGIN>
git pull
<resolve_any_merge_conflicts>
git push --all
git push --tags
<check_NEW_ORIGIN_to_ensure_it_matches_ORIGINAL_ORIGIN>

3
非常有帮助; 正是我所需要的。我唯一需要更改的是在第二行中,在“ HEAD”和“ master”周围添加了单引号。可能是因为我正在使用zsh。谢谢!
sockmonk 2014年

基本上,这是在做以下事情:(1)获取远程分支的实际名称[不是head,不是master];(2)完全告诉Git跟踪它们[并非所有解决方案都这样做];(3)从这些分支[包括标签]中获取和提取所有内容;(4)设置新的起点,逐步完成所有工作。同样,大多数其他解决方案都无法解决所有问题。这就是全部。
ingyhere 2015年

1
我删除了先运行grep然后再执行awk的反模式,然后将grep命令压缩到awk命令中。谢谢三胞胎
ingyhere

阅读此从不写git fetch git pull stackoverflow.com/a/292359/1114926
格林

Git的pull的确做了fetch第一,但它更容易判断问题是否是由fetch部分pull或随后merge的一部分pull时,fetch独立执行。
ingyhere

12

克隆主存储库后,您可以执行

git fetch && git checkout <branchname>

1
简单。并努力从遥远的地方获得分支机构
sirvon 2015年

3
这不能回答原始问题:“我将如何在本地拉所有分支?” 它正在一对一地拉动它们,这是不可扩展的。考虑100个分支的情况。
ingyhere

10

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

在此示例中,仅origin/production分支是可git fetch --all提取的,即使您尝试执行任何操作,但获取production分支都不会发生:

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

该行应替换为:

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

然后运行git fetch...


3
检查: git config --get remote.origin.fetch然后进行(破坏性地)设置:git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
qneill

或修改.git目录中的配置文本文件,对我
有用

9

循环似乎不适用于我,我想忽略原点/原点。这对我有用。

git branch -r | grep -v HEAD | awk -F'/' '{print $2 " " $1"/"$2}' | xargs -L 1 git branch -f --track

之后:

git fetch --all
git pull --all

1
对此的一种变体是正确的答案,但此方法并非在所有极端情况下都适用。另外,分支名称可能很时髦。所以我做了以下事情:git branch -r | grep -v头| grep –v大师| awk -F'origin /''{print $ 2“” $ 1“ origin /” $ 2}'| | | | | | xargs -L 1 git branch -f --track; git fetch --all; git pull --all; 而那把戏!
ingyhere 2014年

3
避免使用grep | awk 样式的样式改进:git branch -r | awk -F 'origin/' '!/HEAD|master/{...
Tripleee

7

仅这三个命令将获得所有分支:

git clone --mirror repo.git  .git     (gets just .git  - bare repository)

git config --bool core.bare false

git reset --hard

这实际上是OP问题的根源。如果克隆正确,他将不需要做pull --all。但是,如果仍然需要,则可以使用@Johnno Nola的另一种答案,即跟踪所有分支,并与该答案混合在一起。
Beco博士

7

为什么没人回答这些人的问题并解释发生了什么?

  1. 确保您正在跟踪所有远程分支(或要跟踪的任何分支
  2. 更新本地分支以反映远程分支。

跟踪所有远程分支:

跟踪远程仓库中存在的所有分支。

手动执行:

您将替换<branch>为从的输出显示的分支git branch -r

git branch -r
git branch --track <branch>

用bash脚本来做

for i in $(git branch -r | grep -vE "HEAD|master"); do git branch --track ${i#*/} $i; done

更新有关本地计算机上的远程分支的信息:

这将从您在本地存储库中跟踪的远程存储库中获取分支上的更新。这不会更改您的本地分支机构。现在,您本地的git repo知道远程repo分支上已发生的事情。例如,一个新的提交已被推送到远程主服务器,现在执行提取将提醒您本地主服务器落后1个提交。

git fetch --all

更新有关本地计算机上的远程分支的信息并更新本地分支:

对于从远程分支到本地分支的所有分支,是否先进行获取然后合并。例如,一个新的提交已被推送到远程主服务器,执行一次拉取将更新有关远程分支中更改的本地存储库,然后将这些更改合并到本地分支中。由于合并冲突,这可能会造成混乱。

git pull --all

4

我写了一个小脚本来管理克隆一个新的仓库,并为所有远程分支建立本地分支。

您可以在这里找到最新版本:

#!/bin/bash

# Clones as usual but creates local tracking branches for all remote branches.
# To use, copy this file into the same directory your git binaries are (git, git-flow, git-subtree, etc)

clone_output=$((git clone "$@" ) 2>&1)
retval=$?
echo $clone_output
if [[ $retval != 0 ]] ; then
    exit 1
fi
pushd $(echo $clone_output | head -1 | sed 's/Cloning into .\(.*\).\.\.\./\1/') > /dev/null 2>&1
this_branch=$(git branch | sed 's/^..//')
for i in $(git branch -r | grep -v HEAD); do
  branch=$(echo $i | perl -pe 's/^.*?\///')
  # this doesn't have to be done for each branch, but that's how I did it.
  remote=$(echo $i | sed 's/\/.*//')
  if [[ "$this_branch" != "$branch" ]]; then
      git branch -t $branch $remote/$branch
  fi
done
popd > /dev/null 2>&1

要使用它,只需将其复制到您的git bin目录(对我来说就是C:\Program Files (x86)\Git\bin\git-cloneall),然后在命令行上:

git cloneall [standard-clone-options] <url>

它照常克隆,但为所有远程分支创建本地跟踪分支。


4

如何获取所有跟踪单个遥控器的Git分支。

这已经过测试并且可以在Windows 10的Red Hat和Git Bash上运行。


TLDR:

for branch in `git branch -r|grep -v ' -> '|cut -d"/" -f2`; do git checkout $branch; git fetch; done;

说明:

一个衬板签出,然后获取除HEAD以外的所有分支。

列出远程跟踪分支。

git branch -r

忽略HEAD。

grep -v ' -> '

从分支机构中删除分支机构名称。

cut -d"/" -f2

签出跟踪单个远程站点的所有分支。

git checkout $branch

获取已签出的分支。

git fetch

从技术上讲,新的本地分支不需要提取。

这可以被用于任一fetchpull分支是新的和具有远程(S)的变化。

只要确保仅在准备好合并时才拉动即可。


测试设置

检出带有SSH URL的存储库。

git clone git@repository.git

之前

检查本地分支。

$ git branch
* master

执行命令

执行一个班轮。

for branch in `git branch -r|grep -v ' -> '|cut -d"/" -f2`; do git checkout $branch; git fetch; done;

检查本地分支是否包括远程分支。

$ git branch
  cicd
  master
* preprod

4

对于使用PowerShell的Windows用户:

git branch -r | ForEach-Object {
    # Skip default branch, this script assumes
    # you already checked-out that branch when cloned the repo
    if (-not ($_ -match " -> ")) {
        $localBranch = ($_ -replace "^.*?/", "")
        $remoteBranch = $_.Trim()
        git branch --track "$localBranch" "$remoteBranch"
    }
}
git fetch --all
git pull --all

这适用于带有/名称的分支: git branch -r | ForEach-Object { # Skip default branch, this script assumes # you already checked-out that branch when cloned the repo if (-not ($_ -match " -> ")) { $localBranch = ($_ -replace "^.*?/", "") $remoteBranch = $_.Trim() git branch --track "$localBranch" "$remoteBranch" } }
Markus

3

我认为这很可靠:

  • 不更新现有分支机构的远程跟踪
  • 不尝试更新HEAD以进行跟踪origin/HEAD
  • 允许名称以外的遥控器 origin
  • 正确引用外壳
for b in $(git branch -r --format='%(refname:short)'); do
  [[ "${b#*/}" = HEAD ]] && continue
  git show-ref -q --heads "${b#*/}" || git branch --track "${b#*/}" "$b";
done
git pull --all

不必通过将此选项git fetch --all传递-allgit pullinternal fetch

相信这个答案


2

这是公认的答案中提供的单线的Perl版本:

git branch -r | perl -e 'while(<>) {chop; my $remote = $_; my ($local) = ($remote =~ /origin\/(.*)/); print "git branch --track $local $remote\n";}' > some-output-file

您可以根据需要将输出文件作为Shell脚本运行。

我们无意中删除了Stash项目存储库。幸运的是,有人在意外损失发生之前就制造了一把叉子。我将叉子克隆到本地(将省略有关操作的详细信息)。将叉子完全放在本地后,我就跑了一根单缸纸。我修改了遥控器的URL(以我的情况为例),使其指向我们要恢复到的目标存储库:

git remote set-url origin <remote-url>

最后像这样将所有分支推向原点:

git push --all origin

然后我们又重新营业。


1

我们可以将所有分支或标记名称放在一个临时文件中,然后对每个名称/标记执行git pull:

git branch -r | grep origin | grep -v HEAD| awk -F/ '{print $NF}' > /tmp/all.txt
git tag -l >> /tmp/all.txt
for tag_or_branch in `cat /tmp/all.txt`; do git checkout $tag_or_branch; git pull origin $tag_or_branch; done

1

如果您有问题,请fetch --all跟踪远程分支:

git checkout --track origin/%branchname%

1

为避免出现错误消息“致命”:名为“ origin / master”的分支已存在。

git branch -r | grep -v '\->'  | grep -v `git branch | awk '/\*/ { print $2; }'`| while read remote; do git branch --track "${remote#origin/}" "$remote"; done

0

根据Learath2的回答,这是我进行git clone [...]cd-ing进入创建的目录后的操作:

git branch -r | grep -v master | awk {print\$1} | sed 's/^origin\/\(.*\)$/\1 &/' | xargs -n2 git checkout -b

为我工作,但我不知道它将为您工作。小心。


0
git remote add origin https://yourBitbucketLink

git fetch origin

git checkout -b yourNewLocalBranchName origin/requiredRemoteBranch (use tab :D)

现在在本地,您yourNewLocalBranchName就是您的requiredRemoteBranch


0

对于Visual Studio用户,在程序包管理器控制台上:

git分支| %{git从上游获取;git merge上游/主}


0

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

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

0

设置别名:(基于最佳答案)

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 track-all-branches

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.