如何获取所有Git分支

Dav*_*542 1371 git branch git-branch

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

$ git branch
* master
Run Code Online (Sandbox Code Playgroud)

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

$ git branch
* master
* staging
* etc...
Run Code Online (Sandbox Code Playgroud)

Woo*_*e88 1844

您可以从所有遥控器中获取一个分支,如下所示:

git fetch --all
Run Code Online (Sandbox Code Playgroud)

fetch更新远程分支的本地副本,这样对于本地分支机构来说总是安全的但是:

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

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

更新当地的分支机构,其跟踪远程分支机构:

git pull --all
Run Code Online (Sandbox Code Playgroud)

但是,这仍然不够.它仅适用于跟踪远程分支的本地分支.要跟踪所有远程分支,请执行此oneliner BEFORE git pull --all:

git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
Run Code Online (Sandbox Code Playgroud)

TL; DR版本

git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
Run Code Online (Sandbox Code Playgroud)

(看起来拉取所有遥控器的所有分支,但我总是首先获取以确定.)

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

PS AFAIK git fetch --allgit remote update是等价的.



Kamil Szot的评论,74(至少)人发现有用.

我不得不使用:

for remote in `git branch -r`; do git branch --track ${remote#origin/} $remote; done
Run Code Online (Sandbox Code Playgroud)

因为你的代码创建了名为的本地分支,origin/branchname并且每当我提到它时,我得到的"refname"origin/branchname'都是不明确的.

  • 我不得不使用`for remote in \`git branch -r \`; 做git branch --track $ {remote#origin /} $ remote; 完成`因为你的代码创建了名为origin/branchname的本地分支,并且每当我提到它时,我得到的"refname'ingen/branchname'都是模棱两可的. (123认同)
  • 抱歉.我无法想象这是OP真正想要的.'pull'命令是'fetch + merge',合并部分会将所有分支覆盖在一起 - 留下一个巨大的混乱. (36认同)
  • 我不知道我是否使用了不同版本的GIT,但我不得不将脚本修改为`git pull --all; 远程在``git branch -r | grep -v \> \`; 做git branch --track $ {remote#origin /} $ remote; done`.改变剥离了HEAD. (21认同)
  • 对于Windows人员:`for/F%remote in('git branch -r')do(git branch --track%remote)&& git fetch --all && git pull --all` (16认同)
  • fetch不会创建一个新的远程分支,你仍然需要用`git checkout -b localname remotename/remotebranch`来检查它. (9认同)
  • @ kim3er的解决方案对我有用.所有代码段的问题在于,当分支名称中包含斜杠或空格时,它们不起作用.当你需要编写防弹bash脚本时,你应该使用`while read`技巧作为这个`git branch -r | 读远程; 做git branch --track"$ {remote#origin /}""$ remote"; d`并引用变量扩展! (5认同)
  • @Max:不得不对('git branch -r')中的/ F%r做一个小调整(git branch --track%r)&& git fetch --all && git pull --all` (4认同)
  • 在检查评论之前执行命令是愚蠢的,我相信接受标记和upvotes ......愚蠢.现在必须删除repo并从头开始克隆. (4认同)
  • 问题非常明确:从一个遥控器获取五个分支,而不是从五个遥控器获取一个分支.我不明白这个答案是如何被接受的. (4认同)
  • 请用评论更新您的答案.这是误导性的,并用`origin /`创建分支 (3认同)
  • `git pull`只会合并到当前分支中,即使是`--all`.因此除了当前之外,它不会更新其他跟踪分支. (3认同)
  • 这对我的git版本根本不起作用:1.8.1.2效果是创建一个名为"origin/$ x"的十几个分支,它们都跟踪本地分支"master". (2认同)
  • 它创建带有“origin/”的分支 (2认同)
  • 不是`fetch --all`意味着要获取所有遥控器?至少它对我不起作用(不取新的远程分支) (2认同)
  • @CarlosHeuberger 获取所有遥控器与获取所有分支不同。大多数人只有一个远程(来源),所以 fetch --all 很少做任何不同的事情。 (2认同)
  • @TedBigham正是为什么我_asked_因为问题是取得所有分支,而不是所有的遥控器! (2认同)
  • 链接到“git fetch”文档的“power move”一词是什么意思?(严重的问题,我不明白这是怎么回事......) (2认同)

Lea*_*th2 642

列出远程分支:
git branch -r

您可以将它们作为本地分支机构查看:
git checkout -b LocalName origin/remotebranchname

  • 当我发现上述问题时,这正是我所寻找的.我怀疑很多人在寻找如何拉远程分支肯定不希望将分支合并到他们当前的工作副本中,但他们确实希望本地分支与远程分支相同. (83认同)
  • 它的默认行为现在.旧的git版本不是这样的.使用`git checkout remotebranchname`用于创建一个名为_remotebranchname_的新的**无关**分支. (12认同)
  • 接受的答案确实有些根本不同,坦率地说,我甚至不明白为什么它是公认的答案 (11认同)
  • 即使分支在本地不可见,我也可以做`git checkout remotebranchname`并且它可以工作.你的解决方案有什么不同? (10认同)
  • OP要求所有分支机构.这个答案只做一个. (7认同)
  • 这对于一次一个分支来说是完美的。只是如果有人可以使用新命令对其进行编辑(但旧命令仍在工作;) (2认同)

Mic*_*ner 185

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

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

for b in `git branch -r | grep -v -- '->'`; do git branch --track ${b##origin/} $b; done
Run Code Online (Sandbox Code Playgroud)

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

此外,git pull --all还将更新本地跟踪分支,但根据您的本地提交以及如何设置"merge"配置选项,它可能会创建合并提交,快进或失败.

  • 这可以解决包含shell元字符的分支名称的解决方案(根据pinkeen对另一个答案的评论),并避免虚假错误输出:git branch -r | grep -v - ' - >'| 读远程; 做git branch --track"$ {remote#origin /}""$ remote"2>&1 | grep -v'已经存在'; DONE (5认同)
  • 你确定`git pull --all`会更新所有本地跟踪分支吗?据我所知,只更新所有遥控器的当前分支. (5认同)
  • 做过这个.未创建匹配远程分支的本地分支.什么是git命令简单地说"如果它们不存在则拉动所有远程分支创建本地分支?" (3认同)

GoZ*_*ner 112

如果你这样做:

git fetch origin
Run Code Online (Sandbox Code Playgroud)

然后他们将在当地.如果你然后执行:

git branch -a
Run Code Online (Sandbox Code Playgroud)

你会看到它们被列为遥控器/原点/分支名称.因为他们在当地,你可以随心所欲地做任何事情.例如:

git diff origin/branch-name 
Run Code Online (Sandbox Code Playgroud)

要么

git merge origin/branch-name
Run Code Online (Sandbox Code Playgroud)

要么

git checkout -b some-branch origin/branch-name
Run Code Online (Sandbox Code Playgroud)

  • `git fetch -all`获取所有遥控器的所有分支.`git fetch origin`获取远程`origin`的所有分支.后者是OP所要求的. (12认同)
  • 刚刚在谷歌上找到了这个页面...这是我正在寻找的实际答案类型.我尝试了第一个命令但收到了一个错误:[$ git fetch --all origin fatal:fetch --all不接受存储库参数] ---使用"git fetch --all"似乎可以解决问题.谢谢你的领导! (5认同)
  • `--all`表示"所有遥控器",而不是"给定遥控器的所有分支".后者是从遥控器的任何提取隐含的. (3认同)
  • 这不是从远程仓库将所有分支机构拉入本地仓库的方法. (2认同)

Joh*_*lan 65

$ git remote update
$ git pull --all
Run Code Online (Sandbox Code Playgroud)

这假定跟踪所有分支.

如果他们不是你可以用Bash解雇这个:

for remote in `git branch -r `; do git branch --track $remote; done
Run Code Online (Sandbox Code Playgroud)

然后运行该命令.

  • 和@JacobLowe一样,我收到了错误,但无论如何它都有效; '致命:一个名为'origin/master'的分支已经存在." (4认同)
  • 而且,它不起作用。我得到输出:`分支'origin/quote-filenames'设置为跟踪本地分支'master'。`所需的输出是:'分支'quote-filenames'设置为跟踪来自'origin的远程分支'quote-filenames' '.` 这是**向后**,设置原点来跟踪遥控器。请参阅[此答案](/sf/answers/3663474251/) 进行修复。 (4认同)
  • 当我尝试时,我仍然得到与上面相同的结果. (2认同)

小智 53

Bash for循环对我来说不起作用,但这完全符合我的要求.我的所有分支都在本地镜像为同名.

git checkout --detach
git fetch origin '+refs/heads/*:refs/heads/*'
Run Code Online (Sandbox Code Playgroud)

请参阅Mike DuPont的评论如下.我想我试图在Jenkins服务器上执行此操作,使其处于分离头模式.

  • 这会导致`致命:在一个简单的克隆之后拒绝获取当前分支refs/heads/master of non-bare repository`.必须首先拆卸头部.我用`git checkout <SHA>`做了这个 (6认同)
  • 使用它的我的解决方案是```git checkout --detach #delech the head```然后```git fetch origin \'+ refs/heads/*:refs/heads/*``` (6认同)

Reg*_*man 48

使用git fetch && git checkout RemoteBranchName.

它对我很有用......

  • 这并没有回答原来的问题:"我如何在本地拉出所有分支?" 它一个接一个地拉它们,这是不可扩展的. (8认同)
  • 这是最好的答案,你们都是.我不知道以前是否可能这是不可能的,但最近版本的Git至少会注意到你正在尝试签出一个远程分支,并会自动为你设置本地跟踪分支(你不需要)指定`origin/branch`;只需说`branch`就足够了. (6认同)
  • 这是唯一允许我在遇到的每种情况下拉取远程分支的答案 (2认同)

Fed*_*ldo 34

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

$ git branch -a
Run Code Online (Sandbox Code Playgroud)

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

$ git checkout -b branchname origin/branchname
Run Code Online (Sandbox Code Playgroud)

然后,您可以一次手动"下载"它们.


然而,有一种更清洁,更快捷的方式,虽然它有点复杂.您需要三个步骤来完成此任务:

  1. 第一步

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

    $ cd ~/Desktop && mkdir my_repo_folder && cd my_repo_folder
    $ git clone --mirror https://github.com/planetoftheweb/responsivebootstrap.git .git
    
    Run Code Online (Sandbox Code Playgroud)

    文件夹my_repo_folder中的本地存储库仍为空,现在只有一个隐藏的.git文件夹,您可以从终端看到"ls -alt"命令.

  2. 第二步

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

    $ git config --bool core.bare false
    
    Run Code Online (Sandbox Code Playgroud)
  3. 第三步

    抓取当前文件夹中的所有内容并在本地计算机上创建所有分支,从而使其成为正常的repo.

    $ git reset --hard
    
    Run Code Online (Sandbox Code Playgroud)

所以现在你可以输入命令git branch,你可以看到所有的分支都被下载了.

这是您可以快速克隆包含所有分支的git存储库的快速方法,但这并不是您希望以这种方式为每个项目执行的操作.


ken*_*orb 26

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

git fetch --all
Run Code Online (Sandbox Code Playgroud)

要么:

git fetch origin --depth=10000 $(git ls-remote -h -t origin)
Run Code Online (Sandbox Code Playgroud)

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


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

git pull --all
Run Code Online (Sandbox Code Playgroud)

如果上面的命令不起作用,那么在上面的命令之前用:

git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
Run Code Online (Sandbox Code Playgroud)

因为remote.origin.fetch在获取时只能支持特定的分支,特别是当你克隆你的回购时--single-branch.通过检查这一点:git config remote.origin.fetch.

之后你应该能够结账任何分支机构.

也可以看看:


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

git push --all
Run Code Online (Sandbox Code Playgroud)

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


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

  • 我使用了浅层克隆(`depth = 1`),配置也为`fetch`指定了一个特定的分支 - `depth = 1000`参数是帮助我签出特定远程分支的修复 (2认同)
  • `pull --all`并没有拉动所有的分支,而是所有的遥控器 (2认同)

mar*_*osh 24

我通常只使用这样的命令:

git fetch origin
git checkout --track origin/remote-branch
Run Code Online (Sandbox Code Playgroud)

更短的版本:

git fetch origin
git checkout -t origin/remote-branch
Run Code Online (Sandbox Code Playgroud)


Kar*_*son 23

您看不到远程分支,因为您没有跟踪它们。

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

跟踪所有远程分支:

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

手动执行:

您将替换<branch>为从git branch -r.

git branch -r
git branch --track <branch>
Run Code Online (Sandbox Code Playgroud)

使用 bash 脚本执行此操作:

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

懒惰的方式(由于合并冲突,这可能会造成混乱,要小心):

git checkout master
git pull
Run Code Online (Sandbox Code Playgroud)

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

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

git fetch --all
Run Code Online (Sandbox Code Playgroud)

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

对从远程分支到本地分支的所有分支进行 fetch 然后合并。一个例子是一个新的提交已被推送到远程主节点,执行拉取将更新您的本地存储库关于远程分支中的更改,然后它将这些更改合并到您的本地分支中。由于合并冲突,这可能会造成相当混乱。

git pull --all
Run Code Online (Sandbox Code Playgroud)


Abh*_*waj 15

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

git clone https://github.com/pathOfrepository
Run Code Online (Sandbox Code Playgroud)

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

cd pathOfrepository
Run Code Online (Sandbox Code Playgroud)

如果你输入,git status你可以看到所有:

   On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

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

 git branch -a
Run Code Online (Sandbox Code Playgroud)

它将列出所有远程分支.

现在,如果您想要在任何特定分支上结帐,只需输入:

git checkout -b localBranchName origin/RemteBranchName
Run Code Online (Sandbox Code Playgroud)


ing*_*ere 14

如果您在这里寻求获得所有分支的解决方案,然后将所有分支迁移到另一个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>
Run Code Online (Sandbox Code Playgroud)

  • 很有帮助; 正是我需要的.我唯一需要改变的是第二行,在'HEAD'和'master'附近加上单引号; 可能是因为我正在使用zsh.谢谢! (3认同)

小智 12

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

git fetch && git checkout <branchname>
Run Code Online (Sandbox Code Playgroud)

  • 这并没有回答原来的问题:"我如何在本地拉出所有分支?" 它一个接一个地拉它们,这是不可扩展的.考虑100个分支的情况. (3认同)

Gre*_*ner 11

如何获取跟踪单个远程的所有 Git 分支。

这已经在 Windows 10 上的 Red Hat 和 Git Bash 上进行了测试和运行。


域名注册地址:

for branch in `git branch -r|grep -v ' -> '|cut -d"/" -f2`; do git checkout $branch; git fetch; done;
Run Code Online (Sandbox Code Playgroud)

解释:

一个 liner 检查然后获取除 HEAD 之外的所有分支。

列出远程跟踪分支。

git branch -r
Run Code Online (Sandbox Code Playgroud)

忽略头。

grep -v ' -> '
Run Code Online (Sandbox Code Playgroud)

从遥控器上取下分支名称。

cut -d"/" -f2
Run Code Online (Sandbox Code Playgroud)

签出跟踪单个遥控器的所有分支。

git checkout $branch
Run Code Online (Sandbox Code Playgroud)

获取签出的分支。

git fetch
Run Code Online (Sandbox Code Playgroud)

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

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

只要确保你准备好合并时才拉。


测试设置

使用 SSH URL 签出存储库。

git clone git@repository.git
Run Code Online (Sandbox Code Playgroud)

检查当地的分支机构。

$ git branch
* master
Run Code Online (Sandbox Code Playgroud)

执行命令

执行一个班轮。

for branch in `git branch -r|grep -v ' -> '|cut -d"/" -f2`; do git checkout $branch; git fetch; done;
Run Code Online (Sandbox Code Playgroud)

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

$ git branch
  cicd
  master
* preprod
Run Code Online (Sandbox Code Playgroud)


Ahm*_*mad 10

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

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

[origin]
fetch = +refs/heads/production:refs/remotes/origin/production
Run Code Online (Sandbox Code Playgroud)

该行应替换为:

[origin]
fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)

然后运行git fetch等...

  • 检查:`git config --get remote.origin.fetch`然后(破​​坏性地)设置它:`git config remote.origin.fetch'+ refs/heads/*:refs/remotes/origin/*'` (3认同)

pox*_*ion 9

循环似乎不适合我,我想忽略原点/主人.这对我有用.

git branch -r | grep -v HEAD | awk -F'/' '{print $2 " " $1"/"$2}' | xargs -L 1 git branch -f --track
Run Code Online (Sandbox Code Playgroud)

之后:

git fetch --all
git pull --all
Run Code Online (Sandbox Code Playgroud)

  • 避免`grep |的样式改进。awk` [antipattern](http://www.iki.fi/era/unix/award.html#grep):`git branch -r | awk -F'origin /''!/ HEAD | master / {`... (2认同)

kie*_*wic 9

对于使用 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
Run Code Online (Sandbox Code Playgroud)


Iza*_*ska 6

只需这三个命令就可以获得所有分支:

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

git config --bool core.bare false

git reset --hard
Run Code Online (Sandbox Code Playgroud)


Tom*_*ale 6

这是我认为稳健的东西:

  • 不更新现有分支机构的远程跟踪
  • 不尝试更新HEAD以跟踪origin/HEAD
  • 允许使用除以下名称以外的名称的遥控器origin
  • 正确引用 shell
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
Run Code Online (Sandbox Code Playgroud)

没有必要git fetch --all将此选项-all传递git pull给内部fetch

归功于这个答案


Nir*_*raj 6

玩git的时候要小心,一步一步来。

$ git remote update  //This will update your local
$ git branch -a      //This will list all the branches(After updating you can now 
see the new branch in the list)
$ git checkout your_branch_name
Run Code Online (Sandbox Code Playgroud)


Tra*_*tal 5

设置别名:(基于最上面的答案)

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'
Run Code Online (Sandbox Code Playgroud)

现在跟踪所有分支:

git track-all-branches


山茶树*_*葡萄树 5

|\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbefetch/clone\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x86\x93   |\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbecheckout\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x86\x93   \n|\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbepull\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x86\x93\nRemote repository (`origin`) <=> Local repository <=> Index <=> Workspace\n\xe2\x86\x91_________________push_______________|   \xe2\x86\x91____commit____|  \xe2\x86\x91____add_____| \n\n
Run Code Online (Sandbox Code Playgroud)\n\n
|\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbefetch/clone\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x86\x93   |\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbecheckout\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x86\x93   \n|\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbepull\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x80\xbe\xe2\x86\x93\nRemote repository (`origin`) <=> Local repository <=> Index <=> Workspace\n\xe2\x86\x91_________________push_______________|   \xe2\x86\x91____commit____|  \xe2\x86\x91____add_____| \n\n
Run Code Online (Sandbox Code Playgroud)\n


Muh*_*man 5

您可以通过这一行命令获取所有分支,如下所示:

git fetch --all && git pull --all && git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
Run Code Online (Sandbox Code Playgroud)