git 的submodule 工具方便第三方庫的管理,比如gitlab 上的各種開源工具,spdlog等
在項目目錄下創建.gitmodule 里可以添加第三方庫,然后在更新第三方庫時,有兩個選項
git submodule update --init 這是更新當前主項目上記錄的submodule 的commitid
比如在提交子項目的時候,會在主項目產生變更,這個變更隨着主項目一起的提交,也就是一一對應
Subproject commit 7d67b54340cebb4ffaa283ebf6975406f8ecda0d
Subproject commit 293633445da9133e959377bef8d61021d5cadc83
那么這個update --init 就會更新為主項目對應的版本,但是這種子項目提交的時候並不會修改.gitmodule里面的版本
這就是與remote的區別
當使用git submodule update --remote的時候,子項目會根據.gitmodule的版本進行更新
當然以上是子項目的管理,對於第三方庫的管理,那一般就是直接更新.gitmodule里的版本,自己不會動別的開發的東西也不會產生提交
綜上可見,如果clone 了一個含有子項目和第三方庫的項目代碼時,需要執行 git submodule update --remote 和 git submodule update --init 兩個命令,或者調整先后,才能正確編譯
