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

Git branch -r显示远程分支。

是否有一种方法只列出本地分支?


当前回答

Use:

git show-ref --heads

gertvdijk的回答是最简洁和优雅的,但这可能有助于理解refs/heads/*等同于局部分支的想法。

大多数情况下,refs/heads/master ref是一个位于. Git /refs/heads/master的文件,其中包含一个Git提交散列,指向代表本地主分支当前状态的Git对象,因此. Git /refs/heads/*下的每个文件都代表一个本地分支。

其他回答

如果前导星号是一个问题,我将按如下方式管道git分支

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

这也消除了“(无分支)”线,显示当你有分离的头。

只是git分支没有选项。

从手册中:

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

Use:

git show-ref --heads

gertvdijk的回答是最简洁和优雅的,但这可能有助于理解refs/heads/*等同于局部分支的想法。

大多数情况下,refs/heads/master ref是一个位于. Git /refs/heads/master的文件,其中包含一个Git提交散列,指向代表本地主分支当前状态的Git对象,因此. Git /refs/heads/*下的每个文件都代表一个本地分支。

下面是如何列出没有相同名称的远程分支的本地分支:

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

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

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

关于这个命令是如何导出的,答案有一个很好的解释,所以我建议你去阅读那篇文章。