列出 Git 远程仓库中所有活跃分支

15

我正在寻找一种列出远程 Git 仓库中所有活跃分支的方法。我尝试了:

git branch -r 

但是这样也会列出已经被删除的分支。我不想显示已删除的分支。


你尝试过先在远程运行 git fetch 吗?另外,--prune 选项也可能有帮助。 - GreenOlvi
可能是重复的问题:为什么我看到已经被删除的远程分支? - random
还有http://stackoverflow.com/questions/24507435/git-branch-is-still-seen-after-merging-and-deleting-branches-under-remote-branch - random
什么区分“活动分支”和其他任何分支?这似乎是特定于特定项目的,因此并不是git真正了解的东西... - twalberg
@GreenOlvi 我理解使用 --prune 或许可以解决我的问题,但我正在寻找更简洁的方法,只需要一个命令即可列出所有活跃的分支,并且不依赖于本地存储库的状态。 - moz8
你选择了正确的答案。 - VonC
4个回答

23

您可以尝试使用git ls-remote命令:

git ls-remote --heads origin

这将直接从远程仓库列出分支,无需进行抓取。


如果我们所说的活动分支是指在远程存在的分支,那么它确实会列出活动分支。 - VonC
1
这就是我在寻找的。非常感谢! - Andre Leon Rangel

12

如果有人在这里寻找“活跃分支”,指的是尚未合并到远程的分支:

git branch -r --no-merged

1
如果您在功能分支中,则运行此命令将不会显示当前分支本身。如果您想列出所有尚未合并到您的“main”分支的分支,包括当前分支,则可以运行:git branch -r --no-merged main,如此处所述。 - TanguyP

6

尝试使用git remote show origin(或任何其他远程存储库)命令。使用git remote prune origin命令来清除已删除的分支。


1
如果你有一个主目录(父级目录)不在git中 和多个子目录在git中 git命令行将无法从父目录工作。 但这将会。列出所有子目录及其活动分支。
从父目录运行。 对于ls -l | grep ^d|cut -d':' -f2|cut -d ' ' -f2中的每个i,执行cd $i;echo $i;git branch; cd ..; done

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接