找到目录下所有第一级子目录的活动git分支

时间:2018-03-14 15:27:20

标签: git gitlab

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

  

请注意,A,B,C,D,E是自己的目录   项目,前A:Web,B:分析C:Devops D:does_somethings E:   Extra_features等。换句话说,每个A-E都是它自己的   库中。

A可以有b1,b2,b3分支由user1创建或者checkeout B可以再次由user1拥有x1,x2,x3分支。等等。
soEach子文件夹A,B,C,D,E可以有多个未合并/合并的分支。

我的问题是,是否有一个命令可以自动告诉我哪个分支机构在哪个存储库(仅限A,B,C,D,E,即仅一级)存在于P下。

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

我查了一下:https://stackoverflow.com/a/2421063/4590025

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

但这不是我想要的。

我正在寻找像鸟瞰的东西。

2 个答案:

答案 0 :(得分:2)

Git一次只能在一个存储库上运行。

存储库由对象和参考数据库以及the documentation中描述的其他文件组成。普通(非裸)存储库只有一个工作树,您可以在其中完成工作。

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

工作树还可以包含子模块作为子目录。这些是Git存储库本身,但由包含 superproject (更高级别的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)。

答案 1 :(得分:0)

让我们将子文件夹视为开发人员正在开发的功能。

当团队遵循描述性分支命名策略时,找到一项工作会更容易。

实施例: 分支名称“P / A / b1”告诉您P / A / b1位置正在进行中。