我知道有一些问题已经围在那里为这一个。就我而言:
假设我有一个带有子模块SR2的仓库R1。
然后,将克隆存储库R1的任何人都会遇到reference is not a tree
错误,因为显然子模块提交修订版仅在本地可用。
如果随后输入git status
R1存储库,则不会警告我子模块位于远程存储库之前的事实。
是否有任何递归检索状态的方法?
您可以尝试以下git submodule foreach
命令:
git submodule foreach --recursive 'git status && echo'
您还可以使用其他命令在此答案中显示正在进行更改的子模块的状态。
为了具有更好的可读性,我对以下别名进行了一些调整:
多行:
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'"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句