Git-in子模块';git状态';“不给”;是最新的”;根回购中的信息

Git-in子模块';git状态';“不给”;是最新的”;根回购中的信息,git,git-submodules,git-status,Git,Git Submodules,Git Status,我有一个带子模块的git回购。 在根repo中,git status提供分支与远程分支的比较状态。例如: On branch develop Your branch is up-to-date with 'origin/develop'. 但是在子模块回购中,我没有第二行。 如何在所有子模块中获取此信息?谢谢。当您使用Git子模块时,默认情况下子模块的状态将被分离 当您运行git submodule update时,无论是第一次还是其他人为子模块推送了新的提交,git都将签出根项目所说的子模块

我有一个带子模块的git回购。 在根repo中,
git status
提供分支与远程分支的比较状态。例如:

On branch develop
Your branch is up-to-date with 'origin/develop'.
但是在子模块回购中,我没有第二行。
如何在所有子模块中获取此信息?谢谢。

当您使用Git子模块时,默认情况下子模块的状态将被分离

当您运行
git submodule update
时,无论是第一次还是其他人为子模块推送了新的提交,git都将签出根项目所说的子模块应该位于的sha1

例如

当有分支时,该日志将更有趣:查找
HEAD
以查看您所在的位置

在我的示例中,如果我现在在子模块内执行
git checkout master
,我仍然处于根repo所期望的提交状态,但我也在子模块内跟踪主分支

> git checkout master
> git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
<>但是如果我要检查一个不是根回购预期的承诺,那么根回购将考虑需要提交的变更。(请在根回购中执行
git diff
git status
,以查看该情况。)

如果团队中的其他人将提交推送到子模块,那么下次我更新根repo并更新git子模块时,我将返回到分离头模式


如果我实际上正在处理子模块,我只会麻烦地签出子模块中的一个分支。

我的子模块通常不在分支上,而是在根repo说它应该具有的提交的分离头上。由于我不在分支上,
git status
无法知道要与哪个远程分支进行比较。嗨,Joanis,我是一个普通的git用户。谢谢你的评论,子模块应该是独立的吗?如果子模块不在其自己的分支上,根回购将按分支数超额收费?与2个变量的子回购a一样,另一个3个变量的子回购将生成6个分支的根回购?每个子模块都有自己的分支,独立于根回购中的分支。当您在子模块中工作并在其中进行提交时,您将在一个分支上推动提交。在这种情况下,
git status
将显示本地分支及其相对于远程分支的状态。但是,如果您没有处理子模块,而是通过
git submodule
命令克隆或更新了它,那么您将看到它处于分离头状态。您可以在子模块中说
git checkout
,以便在需要在其中工作时更改它。顺便说一下,不要说
git status
,我喜欢
git log--all--decoration--graph--format=oneline
:它向我显示了头部相对于所有分支的位置。但有一个问题:分支内部的
git status
是否显示分支上的
开发
头部在
处分离?
> git log --all --decorate --graph --format=oneline
* 59fe3c5232 (HEAD, origin/master, master) Commit details
* 8762eca8d9 Older commit
...
> git checkout master
> git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean