Git:如何仅列出本地分支?

问题描述 投票:0回答:13

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

git branch -r
显示远程分支。

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

git git-branch
13个回答
1627
投票

只是

git branch
,没有选项。

来自手册页

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


247
投票

只是简单的命令

git branch

123
投票

git branch -a
- 所有分支。

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

git branch
- 本地分支(包含链接到远程分支的本地分支)。


47
投票

最直接的方法之一是

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

这也非常适合脚本。


36
投票

如果前导星号有问题,我会按如下方式通过管道传输

git branch

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

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


19
投票

以下是如何列出源中没有同名远程分支的本地分支:

git branch | sed 's|* |  |' | sort > local
git branch -r | sed 's|origin/||' | sort > remote
comm -23 local remote

14
投票

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

git branch -a | grep -v 'remotes'

8
投票

关于如何删除仅限本地分支的帖子有一个很好的答案。在其中,以下内容构建了一个命令来列出本地分支: git branch -vv | cut -c 3- | awk '$3 !~/\[/ { print $1 }'

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


5
投票
gertvdijk 的答案

- 我添加了一些屏幕截图,以防它快速帮助别人。 在我的

Git Bash

shell 中,如果我运行以下命令: git branch

此命令(不带参数)显示我所有的本地分支。当前签出的当前分支以
不同

颜色(绿色)显示,并带有星号(*)前缀,非常直观。

当您尝试使用

-a

(代表

all
)参数查看包括远程分支在内的所有分支时: git branch -a

然后尚未签出的远程分支也以
不同

(红色)颜色显示:


1
投票
git branch

--format
,您可以显示本地分支及其配置的
remote
merge
配置(如存储库的
.git/config
文件中所示)。
git branch --format='%(HEAD) %(refname:short) -> %(upstream:short)'

请参阅 
git for-each-ref

 格式文档,该文档由 
git branch
 使用
您可以将其添加为您的

~/.gitconfig

 中的别名
[alias] [...] brem = branch --format='%(HEAD) %(refname:short) -> %(upstream:short)' [...]

示例

本地有5家分行
  • 有 2 个远程位置:
  • origin
  • upstream
    名为 
  • upstream
  • 的本地分支配置为推/拉到
    upstream
    main
    分支
    名为 
  • test
  • 的本地分支尚未推送到任何地方,并且没有配置远程/合并
    
    
  • > git branch --format='%(HEAD) %(refname:short) -> %(upstream:short)' * main -> origin/main release/v0.01 -> origin/release/v0.01 release/v0.02 -> origin/release/v0.02 test -> upstream -> upstream/main


0
投票

git show-ref --heads

gertvdijk

答案是最简洁和优雅的,但这可能有助于理解refs/heads/*

相当于
本地分支机构。 大多数情况下,

refs/heads/master

引用是

.git/refs/heads/master
处的一个文件,其中包含一个Git提交哈希,该哈希指向代表本地主分支当前状态的Git对象,因此
.git/refs/heads/*
下的每个文件都代表一个本地分支。
    


0
投票
PowerShell

用户可以使用其 Compare-Object cmdlet 执行以下操作: 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



0
投票
git branch

列出尚未合并到远程的更改的本地分支

git branch --list --no-merged

列出从未链接到远程的本地

git branch -vv | awk '/: gone]/{print $1}'

    

© www.soinside.com 2019 - 2024. All rights reserved.