Git子模块

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

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

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

WX20181006-000157@2x.png

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

WX20181006-000446.png

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

WX20181006-000815@2x.png

由于 .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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容