检查子模块提交是否与 repo 指向的相同
Check if the submodule commit is the same as what the repo points to
我们正在使用 git 个子模块来管理大型项目。我们在这个大项目中有大约 20 个子模块,并且子模块不经常更新。
在执行 git submodule update
命令告诉 git 检查超级项目索引中已经指定的提交之前,我想检查子模块中是否存在提交?
类似于 git branch --contains $SHA
但对于子模块。
如果它不存在,那么我想在不包含提交或 git submodule foreach git pull
的子模块中做一个 git fetch
理想情况下,我想避免对所有 20 个子模块执行 git submodule foreach git pull
,如果子模块提交与 repo 指向的不同,则执行 git 获取。
git submodule foreach --quiet \
'git branch --contains <sha1> 2>/dev/null || echo $(basename $(pwd)) no such commit'
如果当前提交在当前分支中(或者更确切地说在当前树中),将打印有关当前提交的信息,否则打印没有这样的提交(||
之后的部分)。
||
之后的部分可用于 运行 git 获取而不是打印信息。
我们正在使用 git 个子模块来管理大型项目。我们在这个大项目中有大约 20 个子模块,并且子模块不经常更新。
在执行 git submodule update
命令告诉 git 检查超级项目索引中已经指定的提交之前,我想检查子模块中是否存在提交?
类似于 git branch --contains $SHA
但对于子模块。
如果它不存在,那么我想在不包含提交或 git submodule foreach git pull
git fetch
理想情况下,我想避免对所有 20 个子模块执行 git submodule foreach git pull
,如果子模块提交与 repo 指向的不同,则执行 git 获取。
git submodule foreach --quiet \
'git branch --contains <sha1> 2>/dev/null || echo $(basename $(pwd)) no such commit'
如果当前提交在当前分支中(或者更确切地说在当前树中),将打印有关当前提交的信息,否则打印没有这样的提交(||
之后的部分)。
||
之后的部分可用于 运行 git 获取而不是打印信息。