在Git仓库目录外如何显示当前分支?

6
在 Git Bash 中,在您进入 repo 目录时,存储库会列出它们所在的分支。
目前我正在开发一个将一组存储库编译成一个产品的项目,当我在包含所有这些存储库的目录中时,能够在每个存储库旁边列出其当前分支将非常有帮助,这样我就可以使用 ls 命令查看。
是否有设置或方法可以使 Git Bash 以这种方式运行?也许有我不熟悉的 ls 标志(虽然这似乎不太可能)?

1
不,lsgit 一无所知,它肯定不能显示当前分支。你必须自己编写脚本。循环遍历项目目录中的每个子目录:进入子目录,打印当前分支,返回到父目录。 - phd
1个回答

6
您可以从当前文件夹执行的命令是:
git --git-dir=subfolder/.git branch --show-current

(--show-current 在Git 2.22及以后版本中可用, 2019年第二季度)

因此,您需要循环遍历子文件夹并使用它来获取所有分支的列表:

作为一种变体,使用-execdir

find . -maxdepth 2 -type d -name ".git" -exec echo -n "{} :" ; -execdir git branch --show-current ;

根据您所使用的Bash版本,您可能需要转义分号;\;


非常完美,非常感谢!这个可以像魔法一样工作! - burnst14
好的,我已经在这个问题上工作了一段时间,但是我无法确定在哪里过滤git命令的输出。我想将每个目录的输出导入到一个过滤命令中,以便去除一些多余的信息。但是当我把它放在最后一个分号之后时,它不起作用,或者当我在git命令之后、那个分号之前放置它时也不行。 - burnst14
@burnst14 你能否编辑你的问题,附上你得到的输出以及你想要的最终结果是什么? - VonC
通常情况下,在所有命令之后使用管道应该能够让您过滤出所需内容。例如:find . -maxdepth 2 -type d -name ".git" -exec echo -n "{} :" ; -execdir git branch --show-current ;|sed "s,/,,g"会删除任何 '/'(这只是一个示例)。 - VonC
我明白了,谢谢!我之前对分号感到困惑,以为它们是管道符号。非常感谢你的帮助! - burnst14

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