git中submodule子模塊的添加、使用和刪除


背景

項目中經常使用別人維護的模塊,在git中使用子模塊的功能能夠大大提高開發效率。

使用子模塊后,不必負責子模塊的維護,只需要在必要的時候同步更新子模塊即可。

本文主要講解子模塊相關的基礎命令,詳細使用請參考man page。

子模塊的添加

添加子模塊非常簡單,命令如下:

git submodule add <url> <path>

其中,url為子模塊的路徑,path為該子模塊存儲的目錄路徑。

執行成功后,git status會看到項目中修改了.gitmodules,並增加了一個新文件(為剛剛添加的路徑)

git diff --cached查看修改內容可以看到增加了子模塊,並且新文件下為子模塊的提交hash摘要

git commit提交即完成子模塊的添加

子模塊的使用

克隆項目后,默認子模塊目錄下無任何內容。需要在項目根目錄執行如下命令完成子模塊的下載:

git submodule init
git submodule update

或:

git submodule update --init --recursive

執行后,子模塊目錄下就有了源碼,再執行相應的makefile即可。

子模塊的更新

子模塊的維護者提交了更新后,使用子模塊的項目必須手動更新才能包含最新的提交。

在項目中,進入到子模塊目錄下,執行 git pull更新,查看git log查看相應提交。

完成后返回到項目目錄,可以看到子模塊有待提交的更新,使用git add,提交即可。

刪除子模塊

有時子模塊的項目維護地址發生了變化,或者需要替換子模塊,就需要刪除原有的子模塊。

刪除子模塊較復雜,步驟如下:

  1. rm -rf 子模塊目錄 刪除子模塊目錄及源碼
  2. vi .gitmodules 刪除項目目錄下.gitmodules文件中子模塊相關條目
  3. vi .git/config 刪除配置項中子模塊相關條目
  4. rm .git/module/* 刪除模塊下的子模塊目錄,每個子模塊對應一個目錄,注意只刪除對應的子模塊目錄即可

執行完成后,再執行添加子模塊命令即可,如果仍然報錯,執行如下:

git rm --cached 子模塊名稱

完成刪除后,提交到倉庫即可。


免責聲明!

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



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