如何更改git子模块的HEAD

时间:2014-08-11 10:02:14

标签: git git-submodules

项目有一个子模块,并指向该子模块的一个特定SHA(ex 62726c)。

因此,每次运行git submodule update --init子模块目录时,仅显示该SHA(62726c)的更改。

最近我更改了子模块并推送了更改SHA(f81611),但如上所述,子模块的HEAD仍指向旧的SHA 62726c

2 个答案:

答案 0 :(得分:3)

在执行git submodule update --init时,您检查项目注册的修订的子模块,该子模块尚未更新,这就是您总是看到它被还原的原因。

要更改超级项目子模块的修订版,请查看所需SHA1的子模块:

git checkout f81611

从主项目中,您将看到子模块被列为被修改(git status)。您需要提交此修改,就像子模块是普通文件一样:

git add <path-to-submodule>
git commit -m "Update submodule XX so that it does YY"

答案 1 :(得分:2)

另一个选择是让你的子模块遵循一个特定的分支:
见&#34; Git submodules: Specify a branch/tag&#34;

然后git submodule update --init --recursive --remote足以检查该分支的最新信息,以指出要指定分支的所有回购。

如果推送的更改SHA(f81611)被推送到repo的master,那么git submodule update --init --remote将更新主子存储库中使用的子模块存储库的内容。< / p>