检查子模块提交是否与repo指向的相同

时间:2016-09-19 20:29:12

标签: git git-submodules

我们使用git子模块来管理大型项目。我们在这个大项目中有大约20个子模块,子模块不经常更新。

在执行HTTP/1.1 200 OK Access-Control-Allow-Origin: https://www.3dhubs.com access-control-expose-headers: api-version, content-length, content-md5, content-type, date, request-id, response-time Content-Type: application/json Date: Wed, 14 Sep 2016 15:48:30 GMT Content-Length: 227629 Connection: keep-alive 命令之前,告诉git检查已经在超级项目的索引中指定的提交,我想检查子模块中是否存在提交?

git submodule update这样的东西,但是对于子模块。

如果它不存在,那么我想在子模块中做一个git branch --contains $SHA,它不会包含提交或git fetch

理想情况下,我想避免对所有20个子模块执行git submodule foreach git pull,如果子模块提交与repo指向的不同,则执行git fetch。

1 个答案:

答案 0 :(得分:1)

git submodule foreach --quiet \
'git branch --contains <sha1> 2>/dev/null || echo $(basename $(pwd)) no such commit'

如果它在当前分支中(或者更确切地说在当前树中),将打印有关当前提交的信息,并打印出没有这样的提交(||之后的部分)。

||之后的部分可以用来运行git fetch而不是打印信息。