Git子模块(submodule)简介

经常有这样的事情,当你在一个项目上工作时,你需要在其中使用另外一个项目。也许它是一个第三方开发的库或者是你独立开发和并在多个父项目中使用的。这个场景下一个常见的问题产生了:你想将两个项目单独处理但是又需要在其中一个中使用另外一个。

子模块允许你将一个 Git 仓库当作另外一个Git仓库的子目录。这允许你克隆另外一个仓库到你的项目中并且保持你的提交相对独立。

Git子模块用法

添加一个子模块

首先你要把外部的仓库克隆到你的子目录中。

假设你想把 pacman项目加入到你的blog项目中,你通过git submodule add将外部项目加为子模块:

cd blog
git submodule add https://gitcafe.com/aceking/pacman.git themes/pacman

现在你就在项目里的themes/pacman子目录下有了一个 pacan项目。你可以进入那个子目录,进行变更,加入你自己的远程可写仓库来推送你的变更,从原始仓库拉取和归并等等。

.gitmodules文件: 这是一个配置文件,保存了项目 URL 和你拉取到的本地子目录。

克隆一个带子模块的项目

克隆你刚才创建子模块的项目。你将得到了包含子项目的目录,但里面没有文件:pacman目录存在了,但是是空的。

你必须运行两个命令:git submodule init来初始化你的本地配置文件,git submodule update来从那个项目拉取所有数据并检出你上层项目里所列的合适的提交。

cd blog
git submodule init themes/pacaman
git submodule update

现在你的pacman子目录就处于你先前提交的确切状态了。

参考:

Git-子模块

最新文章

  1. 测试数组push和unshift方法的效率
  2. Html限制input输入框只能输入数字
  3. jquery为什么提倡使用.on绑定,.off移除组合代替.live和.die组合呢?
  4. java JedisUtils工具类
  5. 023使用typeof关键字获取类内部结构
  6. ngTbale假分页实现排序、搜索、导出CSV等功能
  7. intellij 设置-试验过的
  8. 产品经理如何赢得开发人员的尊重和支持?-摘自infoq
  9. CentOS使用sendmail发送邮件
  10. 微信小程序框架
  11. abstract关键字
  12. HihoCoder - 1139
  13. Linux服务器之间免密登录设置
  14. easyExcel导出excel的简单使用
  15. Python学习笔记整理(python 3)
  16. VmwareTools以及搜狗拼音的安装
  17. cx_Oracle读写clob
  18. jmeter+Jenkins持续集成(邮件通知)
  19. JavaScript按日期排序之灵活排序
  20. Spark 核心篇-SparkEnv

热门文章

  1. unity3d使用litjson中文显示的问题
  2. Spark编程模型及RDD操作
  3. 闹心的python编码
  4. svg图片转换为WEB字体图标
  5. ajax使用json
  6. Web Service接口返回泛型的问题(System.InvalidCastException: 无法将类型为“System.Collections.Generic.List`1[System.String]”的对象强制转换为类型“System.String[]”)
  7. 5、范围标签<fieldset></fieldset>
  8. 介绍shell脚本
  9. js求两个数的最大公约数
  10. SSLv3协议、TLSv1.2协议配置不对导致javax.ws.rs.ProcessingException: java.net.SocketException: Connection reset