git-github 子模塊倉(cāng)庫(kù)更新(git submodule)及git中submodule子模塊的添加、使用和刪除操作
一、git submodule背景
項(xiàng)目中經(jīng)常使用別人維護(hù)的模塊,在git中使用子模塊的功能能夠大大提高開(kāi)發(fā)效率。
使用子模塊后,不必負(fù)責(zé)子模塊的維護(hù),只需要在必要的時(shí)候同步更新子模塊即可。
1. git將submodule有關(guān)的信息在哪?
git將submodule有關(guān)的信息保存在兩個(gè)地方:
- .gitmodules在倉(cāng)庫(kù)中,有版本控制,修改之后會(huì)同步到其他倉(cāng)庫(kù),使用submodule相關(guān)命令的時(shí)候會(huì)自動(dòng)更新
- .git/config在本地,需要手動(dòng)更新,或者執(zhí)行g(shù)it submodule sync將新的配置從.gitmodules拷貝到.git/config
- git submodule sync會(huì)將submodule遠(yuǎn)程的 url 配置設(shè)置到.gitmodules,并且只會(huì)影響.git/config已經(jīng)有 url 的條目,指定–recursive,將會(huì)遞歸更新注冊(cè)的submodule
2. 子模塊的添加
添加子模塊非常簡(jiǎn)單,命令如下:
git submodule add
其中,url為子模塊的路徑,path為該子模塊存儲(chǔ)的目錄路徑。
執(zhí)行成功后,git status會(huì)看到項(xiàng)目中修改了.gitmodules,并增加了一個(gè)新文件(為剛剛添加的路徑)
git diff --cached查看修改內(nèi)容可以看到增加了子模塊,并且新文件下為子模塊的提交hash摘要
git commit提交即完成子模塊的添加
3. 子模塊倉(cāng)庫(kù)更新
github 子模塊多倉(cāng)庫(kù)代碼更新。
git submodule sync git submodule update --init
當(dāng)使用git clone下來(lái)的工程中帶有submodule時(shí),初始的時(shí)候,submodule的內(nèi)容并不會(huì)自動(dòng)下載下來(lái)的,此時(shí),只需執(zhí)行如下命令:
git submodule init
git submodule update
或:
git submodule update --init --recursive
執(zhí)行后,子模塊目錄下就有了源碼,再執(zhí)行相應(yīng)的makefile即可。
子模塊的更新
子模塊的維護(hù)者提交了更新后,使用子模塊的項(xiàng)目必須手動(dòng)更新才能包含最新的提交。
在項(xiàng)目中,進(jìn)入到子模塊目錄下,執(zhí)行 git pull更新,查看git log查看相應(yīng)提交。
完成后返回到項(xiàng)目目錄,可以看到子模塊有待提交的更新,使用git add,提交即可。
4. 刪除子模塊
有時(shí)子模塊的項(xiàng)目維護(hù)地址發(fā)生了變化,或者需要替換子模塊,就需要?jiǎng)h除原有的子模塊。
刪除子模塊較復(fù)雜,步驟如下:
rm -rf 子模塊目錄 刪除子模塊目錄及源碼
vi .gitmodules 刪除項(xiàng)目目錄下.gitmodules文件中子模塊相關(guān)條目
vi .git/config 刪除配置項(xiàng)中子模塊相關(guān)條目
rm .git/module/* 刪除模塊下的子模塊目錄,每個(gè)子模塊對(duì)應(yīng)一個(gè)目錄,注意只刪除對(duì)應(yīng)的子模塊目錄即可
執(zhí)行:git submodule status linux下執(zhí)行: git ls-files --stage | grep 160000 windows下執(zhí)行: git ls-files --stage | findstr 160000
執(zhí)行完成后,再執(zhí)行添加子模塊命令即可,如果仍然報(bào)錯(cuò),執(zhí)行如下:
git rm --cached 子模塊名稱
完成刪除后,提交到倉(cāng)庫(kù)即可。
過(guò)程中問(wèn)題
1.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
參考文獻(xiàn)
git中submodule子模塊的添加、使用和刪除
參考URL: https://blog.csdn.net/guotianqing/article/details/82391665
到此這篇關(guān)于git-github 子模塊倉(cāng)庫(kù)更新(git submodule)/git中submodule子模塊的添加、使用和刪除的文章就介紹到這了,更多相關(guān)git github 子模塊使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
五步完成unity與微信(游戲)小程序交互創(chuàng)建視頻
這篇文章主要介紹了unity與微信(游戲)小程序交互創(chuàng)建視頻的步驟,非常簡(jiǎn)單,只需要五步就可完成,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09
vscode擴(kuò)展代碼定位實(shí)現(xiàn)步驟詳解
這篇文章主要為大家介紹了vscode擴(kuò)展代碼定位實(shí)現(xiàn)步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
有關(guān)將idea的系統(tǒng)配置文件移到其它盤激活失效的問(wèn)題
這篇文章給大家介紹win7系統(tǒng)盤空間不足,發(fā)現(xiàn)idea2019.3 占3.4G,將idea的系統(tǒng)配置文件移到其它盤,激活失效的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-11-11
關(guān)于vs2019安裝不了擴(kuò)展問(wèn)題的解決方法
這篇文章主要介紹了關(guān)于vs2019安裝不了擴(kuò)展問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
vscode eslint插件報(bào)錯(cuò)Parsing error: Invalid
這篇文章主要介紹了vscode eslint插件報(bào)錯(cuò)Parsing error: Invalid ecmaVersion問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
如何在Unity中使用VR暴風(fēng)魔鏡藍(lán)牙手柄
鑒于某些手機(jī)在使用大朋SDK以及谷歌SDK時(shí)會(huì)出現(xiàn)神器的小屏現(xiàn)象(比如某想的)故為了能夠最大程度的兼容更多的手機(jī),決定使用暴風(fēng)魔鏡的SDK。廢話不多說(shuō)直接將使用暴風(fēng)魔鏡SDK時(shí)遇到的問(wèn)題以及解決方案簡(jiǎn)單的羅列一下2021-09-09
架構(gòu)師說(shuō)比起404我們更怕200錯(cuò)誤
這篇文章主要為大家介紹了架構(gòu)中404我們更怕200錯(cuò)誤的解決及分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
UTF-8 BOM 可能導(dǎo)致樣式錯(cuò)亂的解決方法
utf-8 是一種在web應(yīng)用中經(jīng)常使用的一種 unicode 字符的編碼方式,使用 utf-8 的好處在于它是一種變長(zhǎng)的編碼方式,對(duì)于 ANSII 碼編碼長(zhǎng)度為1個(gè)字節(jié),這樣的話在傳輸大量 ASCII 字符集的網(wǎng)頁(yè)時(shí),可以大量節(jié)約網(wǎng)絡(luò)帶寬。2009-06-06

