廊坊網(wǎng)站建設(shè)公司哪家好建站公司哪家好
如果你想在自己的代碼倉(cāng)庫(kù)中嵌入其它倉(cāng)庫(kù),這稱(chēng)為引入子模塊(Submodule)。使用右鍵菜單TortoiseGit - Submodules Add
選項(xiàng),彈出添加子模塊對(duì)話框,可以將一個(gè)外部倉(cāng)庫(kù)嵌入到源代碼樹(shù)的專(zhuān)用子目錄中。
Repository
:外部倉(cāng)庫(kù)的路徑,也可以為 URLPath
:保存外部倉(cāng)庫(kù)的路徑,建議使用相對(duì)路徑(相對(duì)倉(cāng)庫(kù)根目錄,比如使用路徑.\common
會(huì)在倉(cāng)庫(kù)根目錄下創(chuàng)建common
文件夾)。Branch
:勾選后可以將外部倉(cāng)儲(chǔ)嵌入到指定分支,否則默認(rèn)嵌入到當(dāng)前分支。
點(diǎn)擊 OK 按鈕,TortoiseGit 會(huì)自動(dòng)增加子模塊并進(jìn)行子模塊克隆。
然后 common
文件夾內(nèi)就包含有最新的文件了。
雖然 common
文件夾是工作目錄中的一個(gè)子文件夾,但是 Git 還是會(huì)將它視作一個(gè)子模塊,當(dāng)你不在那個(gè)目錄中時(shí),Git 并不會(huì)跟蹤它的內(nèi)容,而是將它看作子模塊倉(cāng)庫(kù)中的某個(gè)具體的提交。
如果一個(gè)倉(cāng)庫(kù)包含子模塊,右鍵菜單會(huì)多出兩個(gè)菜單項(xiàng) Submodule Update
和 Submodule Sync
:
Submodule Update
:初始化子模塊、更新已注冊(cè)的子模塊
-
Initialize submodules(--init)
:初始化子模塊的本地配置文件。 -
Recursive
:當(dāng)有嵌套的子模塊時(shí),遞歸更新這些子模塊。 -
Remote tracking branch
:從遠(yuǎn)端倉(cāng)庫(kù)更新子模塊,本地子模塊更新到與遠(yuǎn)端倉(cāng)庫(kù)一致。 -
Submodule Sync
:當(dāng)子模塊的URL在上游改變時(shí),使用這個(gè)菜單更新本地存儲(chǔ)庫(kù)。
當(dāng)子模塊更改后,在使用子模塊的項(xiàng)目中,在主目錄、在非子模塊文件夾右擊鼠標(biāo),pull
操作并不能將子模塊修改的內(nèi)容同步到項(xiàng)目中。在子模塊文件夾右擊鼠標(biāo),pull
操作可以將子模塊修改的內(nèi)容同步到項(xiàng)目中。在父目錄右擊鼠標(biāo),pull
操作并不能將子模塊修改的內(nèi)容同步到項(xiàng)目中。
使用 Git Submodule Update...
并且勾選 Initialize submodules(--init)
、Recursive
和 Remote tracking branch
時(shí),可以將子模塊修改的內(nèi)容同步到項(xiàng)目。注意,如果不勾選 Remote tracking branch
選項(xiàng),則不會(huì)與遠(yuǎn)端倉(cāng)庫(kù)同步,這樣本地的信息可能是落后的,可能會(huì)把通過(guò)在子模塊目錄上右擊鼠標(biāo),pull
操作獲取的更新恢復(fù)成原來(lái)的舊版本。
子模塊的使用模型
只使用子模塊并不時(shí)地獲取更新,而并不在你的檢出中進(jìn)行任何更改。此時(shí)只有更新子模塊一種操作。
- 方法1:右擊子模塊文件夾,選擇
Git Pull...
,拉取最新的內(nèi)容。然后提交一次,將子模塊鎖定為最新版本,并記錄子模塊更新。 - 方法2:右擊任意文件夾,選擇
Git Submodule Update...
,將拉取內(nèi)容并鎖定為最新版本,然后提交一次,記錄子模塊更新。
導(dǎo)出的工程里面有子模塊
一個(gè)工程里面有子模塊。
通過(guò) 右鍵菜單 - Export...
導(dǎo)出程序。
即使導(dǎo)出的程序里面有 .gitmodules
文件,也不能通過(guò) Git Submodule Update...
菜單更新子模塊。
需要右鍵菜單 TortoiseGit - Submodules Add
選項(xiàng),來(lái)新增子模塊。