git branch -a同时显示远程和本地分支。
git branch -a
git branch -r显示远程分支。
git branch -r
有没有办法只列出当地的分支机构?
只是简单的命令
git branch
只有git branch没有选项。
从manpage:
如果没有参数,则列出现有分支,并且当前分支将用星号突出显示。
如果前导星号是一个问题,我管道git branch如下
git branch | awk -F ' +' '! /\(no branch\)/ {print $2}'
这也消除了当您分离头部时显示的“(无分支)”行。
获取列表只是本地分支的其他方法是:
git branch -a | grep -v 'remotes'
最直接的方法之一是
git for-each-ref --format='%(refname:short)' refs/heads/
这也适用于脚本。
以下是如何列出本地分支,这些本地分支的起源中没有同名的远程分支:
git branch | sed 's|* | |' | sort > localgit branch -r | sed 's|origin/||' | sort > remotecomm -23 local remote
为了补充Gertvdijk的回答-我添加了一些截图,以防它能快速帮助某人。
在我的gitbash shell中,如果我运行以下命令:
这个命令(没有参数)显示了我所有的本地分支。当前签出的当前分支显示为不同颜色(绿色)以及星号(*)前缀,这非常直观。
当您尝试使用-a(代表所有)参数查看包括远程分支在内的所有分支时:
-a
然后,尚未签出的远程分支也显示为不同(红色)颜色:
git branch -a-所有分支。
git branch -r-远程仅分支。
git branch-当地仅分支。
关于如何删除仅本地分支的帖子有一个很好的答案。在其中,以下内容构建了一个命令来列出本地分支:
git branch -vv | cut -c 3- | awk '$3 !~/\[/ { print $1 }'
答案对这个命令是如何派生的有很好的解释,所以我建议你去阅读那篇文章。
用途:
git show-ref --heads
由gertvdijk回答是最简洁和优雅的,但这可能有助于理解refs/heads/*是本地分支的相当。
refs/heads/*
大多数情况下,refs/heads/master ref是.git/refs/heads/master处的文件,其中包含一个Git提交哈希,该哈希指向代表本地主分支当前状态的Git对象,因此.git/refs/heads/*下的每个文件都代表一个本地分支。
refs/heads/master
.git/refs/heads/master
.git/refs/heads/*
PowerShell用户可以使用它的比较对象 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 FalseHEAD->master False True Falserenamed False True False