Git 子模块状态 - 如何显示子模块中的当前分支

Git submodule status - how to show current branches in submodules

使用此命令检查主存储库中子模块的状态:

git submodule status

产生输出(没有关于分支的明确信息):

491e03096e2234dab9a9533da714fb6eff5dcaa7 vendor/submodule1 (v1.51.0-560-g491e030)
8bccab48338219e73c3118ad71c8c98fbd32a4be vendor/submodule2 (v1.32.0-516-g8bccab4)

是否可以在没有以下条件的情况下检查子模块上的当前分支:

cd vendor/submodule1
git status
cd ../submodule2
git status

?

此命令无效:

git submodule status -b

答案隐藏在 git submodule foreach:

git submodule foreach 'git status'

您总是可以通过将其分配给别名来使其更简单:

git config --global alias.sb "submodule foreach \"git status\""

现在 git sb 为您提供有关子模块中分支的详细信息:

Entering 'vendor/submodule1'
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
Entering 'vendor/submodule2'
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

你可以运行git submodule status --recursive

它给出

  • 提交 ID
  • 子模块在项目中的路径
  • 分行名称