idea聚合项目多module 下分支版本管理 git管理

一、适用场景:

某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个

二、如何解决?

Git 通过子模块来解决这个问题。 子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。

三、解决示例:

  1. 首先在github建立仓库(演示如何在一个被分成一个主项目与几个子项目的项目上开发)

2.首先clone 主项目。 ls 查看文件

3.将子module添加到主项目中. --> git submodule add “module git地址”

--> ls (查看文件)

--> git status (可以看到新增 .gitmodules 文件->保存此项目与主项目之间的映射关系,通.gitignore一样进行版本控制)

4. git diff --cached "module名"

git diff --cached --submodule (查看差异)

5.将module提交到主项目上。

git commit -am **** 只是做为记录,非真实提交。

git push origin master 进行提交

6.克隆含有子模块的项目,在克隆这样的项目时,默认会包含该子模块目录,但子模块中还没有任何文件

git clone 项目---带有子项目

必须运行两个命令:git submodule init ->(初始化本地配置文件)

git submodule updata ->(从该项目中抓取所有数据并检出父项目中列出的合适的提交)

或者 git clone --recurse-submodules 有子模块的项目git地址 ->(自动初始化并更新仓库中的每一个子模块, 包括可能存在的嵌套子模块)

在或者已经克隆了项目时,使用 git submodule update --init -> (一次操作命令) 进行自module下载

7.从项目远端拉取上游更改

或者一次命令拉取所有内容。 git pull --recurse-submodules ;

异常情况,子模块更换地址,则需要如下处理

# 将新的 URL 复制到本地配置中
$ git submodule sync --recursive
# 从新 URL 更新子模块
$ git submodule update --init --recursive

8.在子模块上工作(演示如何在子模块与主项目中同时做修改,以及如何同时提交与发布那些修改)

经验分享 程序员 微信小程序 职场和发展