1037

git branch -a显示远程和本地分支。

git branch -r显示远程分支。

有没有办法只列出当地的分支机构?

4

11 回答 11

1563

只是git branch没有选择。

手册页

如果没有参数,则会列出现有分支,并且当前分支将用星号突出显示。

于 2012-09-11T13:23:39.667 回答
240

只是简单的命令

git branch
于 2012-09-11T13:23:28.543 回答
99

git branch -a-所有分支。

git branch -r-仅限远程分支。

git branch -l git branch-仅限本地分支机构。

于 2018-05-14T12:23:03.130 回答
40

最直接的方法之一是

git for-each-ref --format='%(refname:short)' refs/heads/

这也适用于脚本。

于 2016-10-19T04:15:41.820 回答
35

如果前导星号有问题,我git branch将按如下方式进行管道传输

git branch | awk -F ' +' '! /\(no branch\)/ {print $2}'

这也消除了当您分离头部时出现的“(无分支)”线。

于 2013-08-21T13:49:37.803 回答
16

以下是列出在 origin 中没有同名远程分支的本地分支的方法:

git branch | sed 's|* |  |' | sort > local
git branch -r | sed 's|origin/||' | sort > remote
comm -23 local remote
于 2017-01-13T16:13:23.630 回答
12

获取本地分支列表的其他方法是:

git branch -a | grep -v 'remotes'
于 2015-11-13T14:39:33.963 回答
6

关于如何删除本地分支的帖子有一个很好的答案。在其中,这个家伙构建了一个命令来列出本地分支:

git branch -vv | cut -c 3- | awk '$3 !~/\[/ { print $1 }'

答案对这个命令是如何派生的有很好的解释,所以我建议你去阅读那篇文章。

于 2018-05-22T18:05:51.353 回答
5

为了补充@gertvdijk 的答案-我添加了一些屏幕截图,以防它快速帮助某人。

如果我运行以下命令,则在我的 git bash shell 上:

git branch

这个命令(不带参数)显示了我所有的本地分支。当前签出的当前分支以不同的颜色(绿色)显示,并带有一个非常直观的星号 (*) 前缀。

在此处输入图像描述

当您尝试使用-a(stands for all ) 参数查看包括远程分支在内的所有分支时:

git branch -a

然后尚未签出的远程分支也以不同的(红色)颜色显示:

在此处输入图像描述

于 2018-01-11T23:04:41.167 回答
0

Powershell 用户可以使用它的Compare-Objectcmdlet 来做这样的事情。希望代码是不言自明的。

function match-branch {
    $localBranches = ((git branch -l) -replace "\*", "") -replace " ", ""
    $remoteBranches = (((git branch -r) -replace "\*", "") -replace " ", "") -replace "origin/", ""
    Compare-Object -ReferenceObject $localBranches -DifferenceObject $remoteBranches -IncludeEqual
    | Select-Object @{Label = "branch"; Expression = { $_.InputObject } },
    @{Label = ”both”; Expression = { $_.SideIndicator -eq "==" } },
    @{Label = ”remoteOnly”; Expression = { $_.SideIndicator -eq "=>" } }, 
    @{Label = ”localOnly”; Expression = { $_.SideIndicator -eq "<=" } }
}
  • 示例输出
branch        both remoteOnly localOnly
------        ---- ---------- ---------
master        True      False     False
HEAD->master False       True     False
renamed      False       True     False
于 2021-07-10T02:48:32.953 回答
0
git show-ref --heads

@gertvdijk 的回答是最简洁优雅的,但我想把它留在这里,因为它帮助我掌握了相当于本地分支refs/heads/*的想法。

大多数情况下,refs/heads/masterref 是一个.git/refs/heads/master包含 git commit 哈希的文件,该哈希指向代表本地 master 分支当前状态的 git 对象,因此下面的每个文件都.git/refs/heads/*代表一个本地分支。

于 2021-02-13T22:04:34.287 回答