歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Git的submodule功能詳解

Git的submodule功能詳解

日期:2017/2/28 14:34:12   编辑:Linux教程

摘要:項目的版本庫在某些情況下需要引用其他版本庫中的文件,例如有一套公用的代碼庫,可以被多個項目調用,這個公用代碼庫能直接放在某個項目的代碼中,而是要獨立為一個代碼庫,那麼其他要調用公用的代碼庫該如何處理?分別把公用的代碼庫拷貝到各自的項目中會造成冗余,丟棄了公共代碼庫的維護歷史,這些顯示不是好的辦法,現在要了解的git子模組(git submodule)就解決了這個問題。

目錄

1. 前言
2. 准備工作
3. TortoiseGit上git submodule功能實現
1. 添加子模組的步驟
第一步:使用submodule add...添加子模組
第二步:查看.gitmodules的內容
2. 克隆帶子模組的版本庫的步驟
第一步:克隆super主版本庫
第二步:克隆子模組
3. 對主Git庫工作區作commit、checkout、revert、pull、push等更改Git工作區內容的操作時,查看Submodule目錄下內容的效果
1) 對主Git庫工作區作commit操作
2) 對主Git庫工作區作checkout操作
3) 對主Git庫工作區作revert操作
4) 對主Git庫工作區作push操作
5) 對主Git庫工作區作pull操作
4. 對submodule下的內容進行修改後commit、push,對submodule目錄作pull
5. 移除Submodule
第一步:用Delete(keep local) 將目錄或文件命令從git的索引庫中移除子模塊目錄
第二步:刪除物理文件
第三步:刪除.gitmodule文件
第四步:刪除.git/config的submodule配置源文件
第五步:刪除後,提交更改

git的submodule功能詳解

1.前言

項目的版本庫在某些情況下需要引用其他版本庫中的文件,例如有一套公用的代碼庫,可以被多個項目調用,這個公用代碼庫能直接放在某個項目的代碼中,而是要獨立為一個代碼庫,那麼其他要調用公用的代碼庫該如何處理?分別把公用的代碼庫拷貝到各自的項目中會造成冗余,丟棄了公共代碼庫的維護歷史,這些顯示不是好的辦法,現在要了解的git子模組(git submodule)就解決了這個問題。

Git 子模塊功能允許你將一個Git倉庫當作另外一個Git倉庫的子目錄。這允許你克隆另外一個倉庫到你的項目中並且保持你的提交相對獨立。

2.准備工作

首先需要兩個版本庫例如:

1)一個公共的版本庫(例如:libA.git)

[email protected]:fengyang/liba.git

2)一個引用公共版本庫的主版本庫(例如:super.git)

[email protected]:fengyang/super.git

3.TortoiseGit上git submodule功能實現

1.添加子模組的步驟

第一步:使用submodule add...添加子模組

在需要作添加子模組的Git版本庫中右擊,選擇“TortoiseGit->Submodule Add...”,在“Repository:”裡面輸入需要添加子模組的版本庫路徑,在“Path:”

中輸入添加子模組存放的目錄路徑。如下圖所示:

此時查看需要添加子模組的Git工作區的目錄結構。在根目錄下多了一個.gitmodules文件,並且公共代碼庫被克隆到lib/lib_a目錄下。

第二步:查看.gitmodules的內容

.gitmodules的內容記錄著含子模組存放的目錄路徑及子模組版本庫的路徑

注:此時工作區尚未提交,完成提交後,子模組才算正式完成在需要作添加子模組的Git版本庫中創立。

注:此主版本庫(super.git)就變成了一個包含子模組的版本庫。

2.克隆帶子模組的版本庫的步驟

克隆帶子模組的git庫,並不能自動將子模組的版本庫克隆出來,對於只關心項目本身的數據,而不關心項目引用的外部項目數據的用戶,這個功能非常好,數據沒有冗余而且克隆的速度也很快。

第一步:克隆super主版本庫

在工作區中克隆主主版本庫後,會發現子模組的版本庫並沒有克隆,只有將存放子模組版本庫的目錄克隆下來了。

----:存放子模組版本庫的目錄路徑

第二步:克隆子模組

如果需要克隆出子模組形式引用的外部庫,首先需要執行Submodule Update操作。

在需要作克隆子模組的Git工作區中右擊,選擇“TortoiseGit->Submodule Update...”,點擊“OK”即可。

執行Submodule Update...操作後就會把子模組的版本庫克隆下來。

Git 的詳細介紹:請點這裡
Git 的下載地址:請點這裡

推薦閱讀

Fedora通過Http Proxy下載Git http://www.linuxidc.com/Linux/2009-12/23170.htm

在Ubuntu Server上安裝Git http://www.linuxidc.com/Linux/2009-06/20421.htm

服務器端Git倉庫的創建(Ubuntu) http://www.linuxidc.com/Linux/2011-02/32542.htm

Linux下Git簡單使用教程(以Android為例) http://www.linuxidc.com/Linux/2010-11/29883.htm

Git權威指南 PDF高清中文版 http://www.linuxidc.com/Linux/2013-10/91053.htm

Copyright © Linux教程網 All Rights Reserved