Git子模块

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

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

1.在要添加子模块的仓库添加远程子仓库。 git submodule add https://github.com/yanyi0/ASubModule.git。

2.此时查看.gitmodules文件中的内容。cat .gitmodules。

WX20181006-000446.png

3.之后查看工程中含有两个子模块仓库里面的内容。

由于 .gitmodules 文件中的 URL 是人们首先尝试克隆/拉取的地方,因此请尽可能确保你使用的URL 大家都能访问。 例如,若你要使用的推送 URL 与他人的拉取 URL 不同,那么请使用他人能访问到的 URL。 你也可以根据自己的需要,通过在本地执行 git config submodule.ASubModule.url https://github.com/yanyi0/ASubModule.git 来覆盖这个选项的值。 如果可行的话,一个相对路径会很有帮助。

4.使用子模块工程。当你在克隆这样的项目时,默认会包含该子模块目录,但其中还没有任何文件。git clone https://github.com/yanyi0/SubModules.git,克隆之后发现子模块文件夹里面内容是空的。

WX20181006-003734.png

5.git submodule init,git submodule update,git submodule sync。此时发现子模块文件夹里面存在内容。

WX20181006-004230.png

6.此时查看git config --list能看到子模块里面的内容。

WX20181006-004731.png

7.上面4,5步还有更简单的方式git clone --recursive https://github.com/yanyi0/SubModules.git。

WX20181006-005837.png

8.如果子模块有更新,则执行git submodule update --remote ASubModule。

WX20181006-011256.png

你可能感兴趣的:(Git子模块)