项目有一个子模块,并指向该子模块的一个特定SHA(ex 62726c
)。
因此,每次运行git submodule update --init
子模块目录时,仅显示该SHA(62726c
)的更改。
最近我更改了子模块并推送了更改SHA(f81611
),但如上所述,子模块的HEAD仍指向旧的SHA 62726c
。
答案 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>