我知道那里已经存在一些问题this one。就我而言:
我们说我有一个带有子模块SR2的repo R1。
然后,任何将克隆存储库R1的人都会收到reference is not a tree
错误,因为显然子模块提交修订版目前只在本地可用。
如果我在R1存储库中输入git status
,那么我的子模块位于远程存储库之前的事实并没有任何警告。
如果有任何方法可以递归检索状态吗?
答案 0 :(得分:1)
您可以尝试git submodule foreach
command:
git submodule foreach --recursive 'git status && echo'
您可以使用其他命令向您显示this answer中子模块的状态,以了解正在进行的更改。
为了提高可读性,我将其调整为以下别名:
多行:
gss_command='git -c color.status=always status -s | \
sed "s/^\(.*\)/\t\1/g" && git branch -v | \
grep -E "ahead|behind" | \
sed -r "s/[ *]\s(\S*).*(\[(ahead|behind).+?\]).*/\t\1 \2/g"'
alias gs="git rev-parse --show-toplevel && \
$gss_command && \
git submodule foreach --recursive '$gss_command'"
单行:
gss_command='git -c color.status=always status -s | sed "s/^\(.*\)/\t\1/g" && git branch -v | grep -E "ahead|behind" | sed -r "s/[ *]\s(\S*).*(\[(ahead|behind).+?\]).*/\t\1 \2/g"'
alias gs="git rev-parse --show-toplevel && $gss_command && git submodule foreach --recursive '$gss_command'"