最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解git submodule使用以及注意事項

 更新時間:2020年08月20日 11:42:31   作者:玄道公子  
這篇文章主要介紹了詳解git submodule使用以及注意事項,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、背景

在平時的軟件開發(fā)過程中常常會有這樣的場景,自己負責(zé)的某個模塊會依賴其他模塊或者第三方的library。這時你自己的模塊是一個獨立的代碼倉庫,你想要實現(xiàn)這樣一種功能,當你從你的模塊的代碼倉庫里把代碼拉到本地來的時候,能自動的將你依賴的模塊或第三方庫都拉到指定的目錄當中去。

當然要實現(xiàn)這個功能的方法有很多,比如使用repo之類的工具,又比如如果你使用的是svn作為版本管理工具,那么你可以使用svn的external機制來引用第三方的project。

這里要說的是使用git作為版本管理工具的情況。

二、git submodule

其它的細枝末節(jié)就不再贅述了,咱直奔主題。

先來看具體用例:

目前有一個模塊A,其代碼倉庫的地址為:projectA.git, 它需要引用另一個模塊B, 其代碼倉庫的地址為:projectB.git。

假設(shè)模塊A的本地目錄為:projectA

希望引用模塊B為模塊A的子模塊,其在模塊A目錄下的路徑為: projectA/projectB

這里我們通過git 的submodule機制來實現(xiàn)。

比如在命令行里可以直接使用如下命令:

cd projectA
git submodule add projectB.git projectB

注: 這個submodule的 子目錄指定時不能以 “/”結(jié)尾, 比如上面的命令,就不能寫成 projectB/ 這個樣子。

就這么簡單的一句git命令就可以搞定了,當然這還沒完,運行完這個命令之后,在projectA目錄執(zhí)行g(shù)it status命令,可以看到如下的結(jié)果:


這時需要使用git commit命令和git push命令,將添加模塊B為模塊A的子模塊的結(jié)果push到模塊A的代碼倉庫里面去。

三、git clone包含子模塊的代碼倉庫

此時,就可以使用git clone命令來抓取模塊A的代碼倉庫,但要同時抓取到子模塊的倉庫的話,還需要一些方法:

正常的使用git clone命令,然后再使用 git submodule init 和git submodule update來獲取子模塊

git clone projectA.git
cd projectA
git submodule init
git submodule update

其運行結(jié)果如下:


在使用git clone命令時,加上–recurse-submodules或–recursive 這樣的遞歸參數(shù)

git clone --recursive projectA.git

其運行結(jié)果如下:


四、tortoisegit操作submodule

如果是使用tortoisegit的話,也可以使用圖形化界面進行submodule的相關(guān)操作,如添加submodule就選擇如下圖所示的菜單:


添加子模塊的界面大概就是下面這個樣子:


這里和上面一樣“path”一欄不能以”/”結(jié)尾。 填寫之后,點擊OK,就會在主模塊的目錄下添加對應(yīng)的子模塊。

在clone時也是一樣的,它既可以只是clone,然后用上面菜單中,Submodule Update 選項來抓取子模塊的內(nèi)容,也可以在clone時選擇遞歸參數(shù),如下所示:


五、忽略submodule中的修改或新增文件

我們引用第三方的project,大多數(shù)情況都是想以“只讀”的方式引用,不關(guān)心第三方project抓取下來之后是不是被修改,或者是在其目錄中添加了untracked的file, 因為我們只是拉取第三方的project,而不會(往往時不能或不允許)對第三方project進行提交。

以上面的模塊A和模塊B的例子來說,如果模塊A和模塊B中都有進行修改,其結(jié)果可能就是如下這個樣子:


這并不是我們想要的結(jié)果。一開始的時候我的想法是使用 .gitignore 來忽略submodule的修改,但是無法做到,后來經(jīng)過一番搜索,終于找到了解決良藥。在添加了submodule之后,project的目錄下回生成一個.gitmodules文件,這個文件記錄了子模塊的路徑和倉庫地址等信息,如下圖所示:


我們要做的就是在[submodule “projectB”]中添加一個ignore子項,這個ignore子項可以有上個可選的值,untracked, dirty和all, 它們的意思分別是:

  • untracked :忽略 在子模塊B(也就是projectB目錄)新添加的,未受版本控制內(nèi)容
  • dirty : 忽略對projectB目錄下受版本控制的內(nèi)容進行了修改
  • all : 同時忽略untracked和dirty

這里我們先選擇dirty(至少先保證不提交對子模塊B的任何修改),其他的可以根據(jù)具體需求來進行選擇。

添加ignore子項之后的.gitmodules文件的內(nèi)容如下所示:


然后我們再使用git status查看,可以得到圖下結(jié)果:


可以看出,之前 “modified: projectB(modified content)” 已經(jīng)不見了, 此時對修改后的.gitmodules文件進行commit和push, 之后在查看status或做commit時就可以忽略掉對子模塊B修改的部分了。

到此這篇關(guān)于詳解git submodule使用以及注意事項的文章就介紹到這了,更多相關(guān)git submodule使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vscode安裝使用的詳細教程

    vscode安裝使用的詳細教程

    Visual Studio Code (簡稱 VS Code / VSC) 是一款免費開源的現(xiàn)代化輕量級代碼編輯器,這篇文章主要介紹了vscode安裝使用的詳細教程,需要的朋友可以參考下
    2020-08-08
  • 各種語言、服務(wù)器301跳轉(zhuǎn)代碼全集

    各種語言、服務(wù)器301跳轉(zhuǎn)代碼全集

    這篇文章主要介紹了各種語言、服務(wù)器301跳轉(zhuǎn)代碼全集,本文講解了IIS下301設(shè)置、ASP下的301轉(zhuǎn)向代碼、ASP.Net下的301轉(zhuǎn)向代碼、PHP下的301轉(zhuǎn)向代碼 、CGI Perl下的301轉(zhuǎn)向代碼、JSP下的301轉(zhuǎn)向代碼等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • 基數(shù)排序算法的原理與實現(xiàn)詳解(Java/Go/Python/JS/C)

    基數(shù)排序算法的原理與實現(xiàn)詳解(Java/Go/Python/JS/C)

    基數(shù)排序(RadixSort)是一種非比較型整數(shù)排序算法,其原理是將整數(shù)按位數(shù)切割成不同的數(shù)字,然后按每個位數(shù)分別比較。本文將利用Java/Go/Python/JS/C不同語言實現(xiàn)基數(shù)排序算法,感興趣的可以了解一下
    2023-03-03
  • 關(guān)于GBK與UTF-8互轉(zhuǎn)亂碼問題解讀

    關(guān)于GBK與UTF-8互轉(zhuǎn)亂碼問題解讀

    GBK與UTF-8互轉(zhuǎn)亂碼問題,是因為編碼和解碼方式不一致導(dǎo)致的,UTF-8編碼的字符在GBK中解碼可能會出現(xiàn)亂碼,而GBK編碼的字符在UTF-8中解碼則通??梢赃€原,ISO-8859-1編碼是單字節(jié)編碼,可以保證亂碼字符串的還原
    2025-02-02
  • jetbrains mono字體安裝方法(推薦)

    jetbrains mono字體安裝方法(推薦)

    JetBrains 推出了一款名為 "Mono" 的字體。按照官方的說法,Mono 是專為開發(fā)者打造的編程字體。這篇文章主要介紹了jetbrains mono字體安裝方法,需要的朋友可以參考下
    2020-01-01
  • NoVNC以Web方式交付VNC遠程連接的方法

    NoVNC以Web方式交付VNC遠程連接的方法

    noVNC是一個 HTML5 VNC 客戶端,采用 HTML 5 WebSockets, Canvas 和 JavaScript 實現(xiàn),這篇文章主要介紹了NoVNC以Web方式交付VNC遠程連接的方法,感興趣的朋友一起看看吧
    2021-09-09
  • 微信支付、支付寶支付等常用第三方支付通道接口手續(xù)費對比

    微信支付、支付寶支付等常用第三方支付通道接口手續(xù)費對比

    微信支付、支付寶等第三方支付,需要和銀聯(lián)、網(wǎng)聯(lián)對接,有清算機構(gòu)和銀行的交易處理通道成本。費率指支付手續(xù)費的費率,不同行業(yè)、不同的支付平臺、不同的支付額度或次數(shù)所對應(yīng)的通道費率是不一樣的。
    2023-01-01
  • 人工智能學(xué)習(xí)路線分享

    人工智能學(xué)習(xí)路線分享

    這篇文章主要為大家分享了人工智能"六步走"學(xué)習(xí)路線,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 一文了解文檔寫作利器 Markdown

    一文了解文檔寫作利器 Markdown

    這篇文章主要介紹了一文了解文檔寫作利器 Markdown,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2020-04-04
  • win10安裝Anaconda+tensorflow2.0-CPU+Pycharm的圖文教程

    win10安裝Anaconda+tensorflow2.0-CPU+Pycharm的圖文教程

    本文通過圖文并茂的形式給大家介紹了win10安裝Anaconda+tensorflow2.0-CPU+Pycharm的教程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12

最新評論

新化县| 阜城县| 雷山县| 专栏| 集安市| 盘山县| 青阳县| 禹州市| 新巴尔虎左旗| 西峡县| 鄢陵县| 江城| 库尔勒市| 绥德县| 和龙市| 宣武区| 平邑县| 呼玛县| 新化县| 四川省| 嘉鱼县| 濮阳市| 浦江县| 中牟县| 宝应县| 花莲市| 嵊泗县| 新乐市| 吉木萨尔县| 游戏| 棋牌| 遵义市| 芦山县| 丹棱县| 丹棱县| 晋宁县| 广平县| 呼图壁县| 遵义市| 白玉县| 岳池县|