git clone 子模塊

最近在做博客的時(shí)候,用到了其他的themes,因?yàn)榕渲?,所以需要修改themes里面的代碼,這時(shí)候有兩種做法,一種是直接把代碼下到本地,然后將代碼直接拷貝項(xiàng)目中,另一種是用git做管理,項(xiàng)目中添加子項(xiàng)目。我先做的是先fork該theme一份,然后git我fork下來的這個(gè)項(xiàng)目。具體做法如下

添加子項(xiàng)目

git submodule add [address]

$ git submodule add https://github.com/chaconinc/DbConnector
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.

默認(rèn)情況下,子模塊會(huì)將子項(xiàng)目放到一個(gè)與倉(cāng)庫(kù)同名的目錄中,本例中是 “DbConnector”。 如果你想要放到其他地方,那么可以在命令結(jié)尾添加一個(gè)不同的路徑。

自動(dòng)初始化并更新倉(cāng)庫(kù)中的每一個(gè)子模塊

$ git clone --recursive https://github.com/chaconinc/MainProject
Cloning into 'MainProject'...
remote: Counting objects: 14, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 14 (delta 1), reused 13 (delta 0)
Unpacking objects: 100% (14/14), done.
Checking connectivity... done.
Submodule 'DbConnector' (https://github.com/chaconinc/DbConnector) registered for path 'DbConnector'
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.
Submodule path 'DbConnector': checked out 'c3f01dc8862123d317dd46284b05b6892c7b29bc'

在包含子模塊的項(xiàng)目上工作

如果我們?cè)谥黜?xiàng)目中提交并推送但并不推送子模塊上的改動(dòng),其他嘗試檢出我們修改的人會(huì)遇到麻煩,因?yàn)樗麄儫o法得到依賴的子模塊改動(dòng)。 那些改動(dòng)只存在于我們本地的拷貝中。
為了確保這不會(huì)發(fā)生,你可以讓 Git 在推送到主項(xiàng)目前檢查所有子模塊是否已推送。 git push 命令接受可以設(shè)置為 “check” 或 “on-demand” 的 --recurse-submodules 參數(shù)。 如果任何提交的子模塊改動(dòng)沒有推送那么 “check” 選項(xiàng)會(huì)直接使 push 操作失敗。

$ git push --recurse-submodules=check
The following submodule paths contain changes that can
not be found on any remote:
  DbConnector

Please try

    git push --recurse-submodules=on-demand

or cd to the path and use

    git push

to push them to a remote.

如你所見,它也給我們了一些有用的建議,指導(dǎo)接下來該如何做。 最簡(jiǎn)單的選項(xiàng)是進(jìn)入每一個(gè)子模塊中然后手動(dòng)推送到遠(yuǎn)程倉(cāng)庫(kù),確保它們能被外部訪問到,之后再次嘗試這次推送。

另一個(gè)選項(xiàng)是使用 “on-demand” 值,它會(huì)嘗試為你這樣做。

$ git push --recurse-submodules=on-demand
Pushing submodule 'DbConnector'
Counting objects: 9, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (9/9), 917 bytes | 0 bytes/s, done.
Total 9 (delta 3), reused 0 (delta 0)
To https://github.com/chaconinc/DbConnector
   c75e92a..82d2ad3  stable -> stable
Counting objects: 2, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 266 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
To https://github.com/chaconinc/MainProject
   3d6d338..9a377d1  master -> master

如你所見,Git 進(jìn)入到 DbConnector 模塊中然后在推送主項(xiàng)目前推送了它

參考
git clone 子模塊(module)
git子模塊

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 工作開發(fā)場(chǎng)景: 使用gitlab進(jìn)行版本控制開發(fā)工作,對(duì)git的使用并不是知道的很多,第一次把項(xiàng)目整個(gè)gitclo...
    簡(jiǎn)書用戶9527閱讀 1,862評(píng)論 0 1
  • 開發(fā)中我們經(jīng)常會(huì)遇到這樣的情況:項(xiàng)目越來越大,一些通用的模塊我們希望將他抽離出來作為單獨(dú)的項(xiàng)目,以便其他項(xiàng)目也可以...
    feil0n9wan9閱讀 20,598評(píng)論 0 24
  • git子模塊的使用 git子模塊可以用于項(xiàng)目包含另一個(gè)項(xiàng)目的情況,也許是第三方庫(kù)或被多個(gè)項(xiàng)目引用的基礎(chǔ)框架。此次學(xué)...
    看似平淡閱讀 3,114評(píng)論 0 0
  • 現(xiàn)在社會(huì),各種突發(fā)事件頻發(fā),伴隨著應(yīng)急處置,一個(gè)名字叫做預(yù)案的東西開始進(jìn)入我們的視野,預(yù)案管理作為企業(yè)管理的一個(gè)重...
    eeprom閱讀 218評(píng)論 0 1
  • 奇策一出堪任謀主 智勇一大應(yīng)為怯愚。 自留名節(jié)在, 清氣滿乾坤。 留不住的大漢, 挽不回的榮光, 我只能,先行告退...
    北_棠閱讀 230評(píng)論 0 0

友情鏈接更多精彩內(nèi)容