git submodule update --init 和 --remote的區別


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 兩個命令,或者調整先后,才能正確編譯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM