Git子模塊(submodule)簡介
經(jīng)常有這樣的事情新娜,當(dāng)你在一個(gè)項(xiàng)目上工作時(shí)绊起,你需要在其中使用另外一個(gè)項(xiàng)目精拟。也許它是一個(gè)第三方開發(fā)的庫或者是你獨(dú)立開發(fā)和并在多個(gè)父項(xiàng)目中使用的。這個(gè)場景下一個(gè)常見的問題產(chǎn)生了:你想將兩個(gè)項(xiàng)目單獨(dú)處理但是又需要在其中一個(gè)中使用另外一個(gè)虱歪。
子模塊允許你將一個(gè) Git 倉庫當(dāng)作另外一個(gè)Git倉庫的子目錄蜂绎。這允許你克隆另外一個(gè)倉庫到你的項(xiàng)目中并且保持你的提交相對(duì)獨(dú)立。
Git子模塊用法
添加一個(gè)子模塊
首先你要把外部的倉庫克隆到你的子目錄中笋鄙。
假設(shè)你想把 pacman項(xiàng)目加入到你的blog項(xiàng)目中师枣,你通過git submodule add
將外部項(xiàng)目加為子模塊:
cd blog
git submodule add https://gitcafe.com/aceking/pacman.git themes/pacman
現(xiàn)在你就在項(xiàng)目里的themes/pacman子目錄下有了一個(gè) pacan項(xiàng)目。你可以進(jìn)入那個(gè)子目錄萧落,進(jìn)行變更践美,加入你自己的遠(yuǎn)程可寫倉庫來推送你的變更,從原始倉庫拉取和歸并等等找岖。
.gitmodules文件: 這是一個(gè)配置文件陨倡,保存了項(xiàng)目 URL 和你拉取到的本地子目錄。
克隆一個(gè)帶子模塊的項(xiàng)目
克隆你剛才創(chuàng)建子模塊的項(xiàng)目许布。你將得到了包含子項(xiàng)目的目錄兴革,但里面沒有文件:pacman目錄存在了,但是是空的蜜唾。
你必須運(yùn)行兩個(gè)命令:git submodule init
來初始化你的本地配置文件杂曲,git submodule update
來從那個(gè)項(xiàng)目拉取所有數(shù)據(jù)并檢出你上層項(xiàng)目里所列的合適的提交。
cd blog
git submodule init themes/pacaman
git submodule update
現(xiàn)在你的pacman子目錄就處于你先前提交的確切狀態(tài)了袁余。
參考:
Git-子模塊