当前位置:   article > 正文

Git:子模块_git 子模块

git 子模块


在项目开发时,你有可能经常性地想要去引用一些库文件或其它资源文件。手动的方法就是直接下载那些必要的代码文件,然后拷贝到你的项目中,最后将这些新的文件提交到你的 Git 仓库中去。
虽然这是一种有效的方法,但是这种操作并不是最简单有效的。如果只是任意地将这些库文件提交到你的项目中,将带来一系列的问题:
外部代码和自己开发的代码会被合并保存在一个项目中。其实那些库文件自身就应该是一个项目,并且也应该独立于我们的工作之外。在我们当前项目的版本控制系统中,它们并不需要被保存。
如果库文件发生了变化(可能因为修复错误或是添加新的功能),更新这些库文件的代码对我们来说会是很繁琐的事。我们需要再次下载它的原代码文件,并且替换掉在仓库中已有的文件。
由于这些都是在日常项目开发时非常普遍存在的问题,所以 Git 也提供了一个解决方案:子模块(Submodule)。

仓库包含其它的仓库

一个 “子模块” 其实就是一个标准的 Git 仓库。不同的是,它被包含在另一个主项目的仓库中。一般情况下,它包含一些库文件和其它资源文件,你可以简单地把这些库文件作为一个子模块添加到你的主项目中。

一个子模块也是一个功能齐全的 Git 仓库,就内部而言它和别的仓库没有什么区别,你可以对它进行修改、提交、抓取、推送等等操作。

让我们来看看在实际操作中子模块是如何工作的吧。

添加一个子模块

在这个简单的项目中,我们建立一个新的 “lib” 文件目录用来存放一些库文件。

$ mkdir lib
$ cd lib
  • 1
  • 2

使用 “git submodule add” 命令,我们会从 GitHub 中添加一个小的 Javascript 库:

$ git submodule add https://github.com/xxx
  • 1

来让我们来看看现在发生了什么:

(1) 这个命令将对一个指定的 Git 仓库进行了一个简单地克隆操作:

Cloning into 'lib/ToProgress'...
remote: Counting objects: 180, done.
remote: Compressing objects: 100% (89/89), done.
remote: Total 180 (delta 51), reused 0 (delta 0), pack-reused 91
Receiving objects: 100% (180/180), 29.99 KiB | 0 bytes/s, done.
Resolving deltas: 100% (90/90), done.
Checking connectivity... done.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

(2) 当然这一切也都会反映在我们当前项目的文件结构上。在项目中的 “lib” 目录中包括了一个新的 “ToProgess” 文件目录。通过这个文件目录所包含的 “.git” 子文件夹我们就能确认,这就是一个标准的 Git 仓库。
在这里插入图片描述
当然,子模块的工作文件都放置在你项目的指定的目录中。最后当你要使用这些库文件时,你会发现它们并不是主项目的版本控制的一部分

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/705053
推荐阅读
相关标签
  

闽ICP备14008679号