git - 查找目录下所有一级子目录的事件 git 分支

标签 git gitlab

根据评论更新问题:
项目 P,由子模块/迷你项目 A、B、C、D、E 组成。

Please note that A,B,C,D,E are directories which house their own projects, ex A: Web, B: Analytics C: Devops D:does_somethings E : Extra_features and so on. in other words each of A-E is its own repository.

A 可以有 b1、b2、b3 分支,这些分支由 user1 创建或 checkout 。
B 可以有 x1,x2,x3 个分支,同样由 user1。等等。
所以每个子文件夹 A、B、C、D、E 都可以有多个未 merge/merge 的分支。

我的问题是,是否有一个命令会自动告诉我哪个分支在 P 下的哪个存储库(仅 A、B、C、D、E,即仅第一级)上处于事件状态。

现在我是 cd '进入每个子文件夹,然后输入'git branch'。
所以如果我有 10 个子文件夹,我必须 cd 到它们 10 次,然后再执行 git branch 10 次。

我检查了这个:https://stackoverflow.com/a/2421063/4590025

git log --graph --pretty=oneline --abbrev-commit

但这不是我要找的。

我正在寻找鸟瞰图之类的东西。

最佳答案

Git 一次只能在一个存储库上工作。

存储库由对象和引用数据库以及附加文件组成,如 the documentation 中所述。 .普通(非裸)存储库只有一个工作树,您可以在其中完成工作。

工作树可以包含子目录,但这些只是工作树中的目录。

工作树还可以包含子目录子模块。这些本身就是 Git 存储库,但由包含的 super 项目(更高级别的 Git 存储库)引用。如果您正在使用子模块,则可以使用 Git 命令来处理每个子模块(例如,git submodule foreach)。本质上,这些在子存储库中运行子命令。 See the git submodule documentation for details.这只会自动执行我将在下一段中提出的建议。如果你正在使用 git submodule foreach 本身,你仍然需要编写命令。

否则,例如,您有一个包含 N 个子目录的顶级目录,每个子目录都是一个独立的存储库,您必须运行N 在每个子目录中使用单独的 git 命令来检查独立的存储库。没有 Git 命令可以做到这一点。不过,编写执行此操作的 shell 命令(带有循环)非常简单:

for i in */; do \
     (cd $i && echo -n "${i}: " && git rev-parse --abbrev-ref HEAD); \
done

(假设 BSD 或 Linux 兼容 echo)。

关于git - 查找目录下所有一级子目录的事件 git 分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49281685/

相关文章:

git - 如何在不覆盖数据库数据的情况下进行 git pull

git - 运行预提交 Hook 后要暂存什么?

新的未暂存文件的 Git 警告

gitlab - 如何在 readme.md 中显示每个分支的 gitlab 徽章

gitlab - 带有美元符号的 secret 变量设置不正确

git - 然后我在本地删除了一个分支为什么这个分支在github上仍然有效

git push 找不到主机

git - 无密码克隆 Gitlab 仓库

Gitlab 'fatal: repository ' .. .' not found'-无法推送到新创建的项目

github - 如果 gitlab 管道中的条件为真,则运行依赖项作业