什么是Git 子模塊
開發(fā)中我們可能會(huì)遇到:某個(gè)工作中的項(xiàng)目需要包含并使用另一個(gè)項(xiàng)目。 可能是第三方庫,也可能是獨(dú)立的,復(fù)用于多個(gè)父項(xiàng)目的庫。 那么問題來了:你想在一個(gè)項(xiàng)目中使用另一個(gè),同時(shí)又想保持兩個(gè)項(xiàng)目的相互獨(dú)立。使用Git 自帶的子模塊功能就可以解決這個(gè)問題。
子模塊的使用命令
創(chuàng)建子倉(cāng)庫
先進(jìn)入父?jìng)}庫目錄下,然后執(zhí)行命令:
git submodule add <倉(cāng)庫地址> <本地路徑>
<本地路徑>是可選項(xiàng),默認(rèn)情況下,子模塊會(huì)在當(dāng)前目錄下面,將子項(xiàng)目放到一個(gè)與倉(cāng)庫同名的目錄中。如果指定了本地路徑,則會(huì)把子項(xiàng)目放在指定的本地路徑下。
執(zhí)行上面命令后,在父?jìng)}庫根目錄增加了.gitmodule文件。
[submodule 倉(cāng)庫名稱]
path = 倉(cāng)庫名稱(或指定的本地路徑)
url = 倉(cāng)庫地址
clone 帶有子倉(cāng)庫的git項(xiàng)目
git clone 帶有子倉(cāng)庫的git倉(cāng)庫地址
這個(gè)命令并不會(huì)clone下子倉(cāng)庫的文件,只是會(huì)克隆下.gitmodule描述文件,需要執(zhí)行下面的命令拉取子倉(cāng)庫文件。
// 初始化本地子項(xiàng)目配置
$ git submodule init
// 拉取子倉(cāng)庫文件
$ git submodule update
或者使用組合指令:
git submodule update --init --recursive
子倉(cāng)庫代碼的修改和更新
如果在本地修改子倉(cāng)庫,在主倉(cāng)庫執(zhí)行g(shù)it status,會(huì)顯示子倉(cāng)庫有修改。需要先在子倉(cāng)庫提交,然后再到主倉(cāng)庫提交代碼。
由于父?jìng)}庫和子倉(cāng)庫是兩個(gè)獨(dú)立的git倉(cāng)庫,所以最好在子倉(cāng)庫的開發(fā)中單獨(dú)進(jìn)行g(shù)it相關(guān)操作,在父?jìng)}庫不對(duì)子倉(cāng)庫文件做修改,只進(jìn)行子倉(cāng)庫代碼的拉取,并把修改提交上去。