溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

git-github子模塊倉庫更新及git中submodule子模塊的添加、使用和刪除方法是什么

發(fā)布時間:2023-03-27 15:44:59 來源:億速云 閱讀:150 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“git-github子模塊倉庫更新及git中submodule子模塊的添加、使用和刪除方法是什么”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“git-github子模塊倉庫更新及git中submodule子模塊的添加、使用和刪除方法是什么”文章能幫助大家解決問題。

git submodule背景

項目中經(jīng)常使用別人維護的模塊,在git中使用子模塊的功能能夠大大提高開發(fā)效率。
使用子模塊后,不必負責子模塊的維護,只需要在必要的時候同步更新子模塊即可。

1. git將submodule有關(guān)的信息在哪?

git將submodule有關(guān)的信息保存在兩個地方:

  • .gitmodules在倉庫中,有版本控制,修改之后會同步到其他倉庫,使用submodule相關(guān)命令的時候會自動更新

  • .git/config在本地,需要手動更新,或者執(zhí)行g(shù)it submodule sync將新的配置從.gitmodules拷貝到.git/config

  • git submodule sync會將submodule遠程的 url 配置設置到.gitmodules,并且只會影響.git/config已經(jīng)有 url 的條目,指定–recursive,將會遞歸更新注冊的submodule

2. 子模塊的添加

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

git submodule add

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

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

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

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

3. 子模塊倉庫更新

github 子模塊多倉庫代碼更新。

git submodule sync
git submodule update --init

當使用git clone下來的工程中帶有submodule時,初始的時候,submodule的內(nèi)容并不會自動下載下來的,此時,只需執(zhí)行如下命令:
git submodule init
git submodule update

或:
git submodule update --init --recursive

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

子模塊的更新

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

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

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

4. 刪除子模塊

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

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

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

執(zhí)行:git submodule status
linux下執(zhí)行:
git ls-files --stage | grep 160000 
windows下執(zhí)行:
git ls-files --stage | findstr 160000

執(zhí)行完成后,再執(zhí)行添加子模塊命令即可,如果仍然報錯,執(zhí)行如下:
git rm --cached 子模塊名稱

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

過程中問題

fatal: Please stage your changes to .gitmodules or stash them to proceed
D:\GoWorks\src\mylotus>git rm --cached extern/filecoin-ffi
fatal: Please stage your changes to .gitmodules or stash them to proceed

如果提示Please stage your changes to .gitmodules or stash them to proceed直接刪掉.gitmodules文件即可
$ rm ./gitmodules

關(guān)于“git-github子模塊倉庫更新及git中submodule子模塊的添加、使用和刪除方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI