當一個產品或者項目由大量獨立模塊組成時,想要從 Git 挨個下載下來導入 IDE 查看并不容易,此時可以結合使用 Git 和 Maven 的子模塊來處理這種場景。
通過 Git 子模塊可以自動批量下載所有關聯的項目,通過 Maven 子模塊可以批量導入到 IDE 中,結合這兩者可以很容易的管理和查看項目。
創建子模塊項目
打開 Git Bash,創建一個空目錄并進入:
$ mkdir erp-submodules$ cd erp-submodules/
把當前目錄初始化為 Git 倉庫
$ git init
添加所有子模塊(可以一次輸入多行命令,注意看最后一行命令是否執行):
$ git submodule -b master add http://IP/auto-erp/purchase.gitgit submodule -b master add http://IP/auto-erp/checkup.gitgit submodule -b master add http://IP/auto-erp/task.gitgit submodule -b master add http://IP/auto-erp/sale.gitCloning into 'purchase'...remote: Counting objects: 5151, done.remote: Compressing objects: 100% (86/86), done.remote: Total 5151 (delta 49), reused 108 (delta 30)Receiving objects: 100% (5151/5151), 1.12 MiB | 0 bytes/s, done.Resolving deltas: 100% (2269/2269), done.Checking connectivity... done.warning: LF will be replaced by CRLF in .gitmodules.The file will have its original line endings in your working directory.
等待所有項目下載完成。
此時就創建了所有的子項目,為了方便以 MAVEN 方式導入全部項目,使用子模塊配置。
在當前項目下面添加 pom.xml,內容如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.github.abel533</groupId> <artifactId>erp-modules</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>pom</packaging> <modules> <!-- 所有子模塊 --> <module>purchase</module> <module>barch</module> <module>checkup</module> <module>task</module> <module>sale</module> <module>packing</module> <module>logistics</module> </modules></project>
此時項目已完成,提交本地更改并上傳到 git 服務器。
# 添加所有$ git add -all# 提交$ git commit -m 'first commit'# 添加遠程倉庫地址$ git remote add origin 創建好的倉庫地址# 推送$ git push origin master
檢出導入項目
剛剛按照上面步驟操作后,本地是可以用了,但是如果其他成員想下載,就需要檢出。
在要檢出的目錄中,打開 git bash,輸入下面的命令檢出項目:
$ git clone --recursive 倉庫地址# 以下為部分輸出日志Cloning into 'erp-modules'...remote: Counting objects: 6, done.remote: Compressing objects: 100% (6/6), done.remote: Total 6 (delta 0), reused 0 (delta 0)Unpacking objects: 100% (6/6), done.Checking connectivity... done.Submodule 'ERPcrm' (http://IP/auto-erp/ERPcrm.git) registered for path 'ERPcrm'Submodule 'accountNew' (http://IP/auto-erp/accountNew.git) registered for path 'accountNew'Submodule 'barch' (http://IP/auto-erp/barch.git) registered for path 'barch'Submodule 'checkup' (http://IP/auto-erp/checkup.git) registered for path 'checkup'Submodule 'contract' (http://IP/auto-erp/contract.git) registered for path 'contract'Cloning into 'ERPcrm'...remote: Counting objects: 1651, done.remote: Compressing objects: 100% (274/274), done.remote: Total 1651 (delta 139), reused 447 (delta 70)Receiving objects: 100% (1651/1651), 265.91 KiB | 0 bytes/s, done.Resolving deltas: 100% (494/494), done.Checking connectivity... done.Submodule path 'ERPcrm': checked out '26686570bc1f22627f717830599ac77248014b87'Cloning into 'accountNew'...remote: Counting objects: 1850, done.remote: Compressing objects: 100% (689/689), done.otal 1850 (delta 866), reused 1624 (delta 664)Receiving objects: 100% (1850/1850), 496.70 KiB | 0 bytes/s, done.Resolving deltas: 100% (866/866), done.Checking connectivity... done.
此時所有子模塊都自動下載了,但是所有子模塊都沒有選擇分支,如果不選擇分支會導致項目混亂,所以下面切換分支,并且更新。
# 進入 clone 下來的目錄$ cd erp-modules/# 執行下面的命令 git submodule foreach <命令>$ git submodule foreach git checkout master && git pull origin master
所有子模塊都切換到了 master 分支并且進行了更新。可以將項目導入 IDE 了。
在后續使用的時候,要隨時注意子模塊的分支,防止意外導致的錯誤。
利用git submodule foreach <命令>
可以很方便的對子模塊批量執行命令。
刪除 Git 子模塊比較麻煩,可以參考下面地址:
https://gist.github.com/myusuf3/7f645819ded92bda6677
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。
新聞熱點
疑難解答
圖片精選