git branch -a
显示远程和本地分支。
git branch -r
显示远程分支。
有没有办法只列出本地分支?
答案 0 :(得分:1274)
只有git branch
没有选项。
从联系手册:
如果没有参数,则列出现有分支,并使用星号突出显示当前分支。
答案 1 :(得分:198)
只是普通命令
git branch
答案 2 :(得分:34)
如果前导星号有问题,我按如下方式管道git branch
git branch | awk -F ' +' '! /\(no branch\)/ {print $2}'
这也消除了当你有分离头时出现的'(无分支)'线。
答案 3 :(得分:28)
最直接的方法之一是
git for-each-ref --format='%(refname:short)' refs/heads/
这也适用于脚本。
答案 4 :(得分:25)
git branch -a
- 所有分支。
git branch -r
- 仅限远程分支。
git branch -l
或git branch
- 仅限本地分支机构。
答案 5 :(得分:10)
以下是如何列出原始分支中没有远程分支的本地分支:
git branch | sed 's|* | |' | sort > local
git branch -r | sed 's|origin/||' | sort > remote
comm -23 local remote
答案 6 :(得分:9)
获取列表的其他方式只是本地分支:
git branch -a | grep -v 'remotes'
答案 7 :(得分:2)
关于如何删除仅本地分支的帖子有一个很棒的answer。在其中,该伙伴构建了一个命令来列出本地分支:
git branch -vv | cut -c 3- | awk '$3 !~/\[/ { print $1 }'
答案对如何推导出这个命令有很好的解释,所以我建议你去阅读那篇文章。
答案 8 :(得分:0)
只是为了补充@ gertvdijk的回答 - 一张图片说了千言万语以防万一。“
在我的git bash shell上
没有任何参数的git branch
命令显示我所有的本地分支。当前已检出的当前分支也以不同的颜色(绿色)显示,并带有非常直观的星号。
当您尝试使用
查看包括远程分支在内的所有分支时git branch -a
命令然后未检出的远程分支以红色显示:
答案 9 :(得分:0)
git show-ref --heads
@gertvdijk 的回答是最简洁和优雅的,但我想把它留在这里,因为它帮助我理解了 refs/heads/*
与本地分支等价的想法。 >
大多数情况下,refs/heads/master
ref 是 .git/refs/heads/master
处的一个文件,其中包含一个 git commit 哈希,该哈希指向代表本地 master 分支当前状态的 git 对象,因此每个文件都位于.git/refs/heads/*
代表本地分支。
答案 10 :(得分: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