如何做git子模块以及为什么要使用git子模块

时间:2015-08-03 14:54:24

标签: git github git-submodules git-subtree

我找到了一个github项目,它使用git子模块。

git子模块的用途是什么?

如何创建git子模块?

他们与子树有何区别?

GitSubModule

谢谢

1 个答案:

答案 0 :(得分:8)

Git子模块:

git存储库中的子模块就像一个子目录,它本身就是一个独立的git存储库。当你在git中有一个依赖于其他项目的特定版本的项目时,这是一个很有用的功能

Git子树:

Git子树允许您将任何存储库作为另一个存储库的子目录插入。子目录将成为超级项目的永久部分

Git子树和子模块:

子树合并将子树的内容和历史永久地集成到合并子树的父存储库中。

子模块只是对子模块中特定提交的引用。引用提交的更改历史记录保留在父模块中,但不会在父模块中跟踪子模块的内容或历史记录。

配置Git子模块:

  • 你有一个项目 - 称之为已经有github仓库的MyWebApp

  • 您想在项目中使用jquery存储库

  • 您希望将jquery repo作为子模块提取到项目中。

  • 子模块非常容易引用和使用。假设您已将MyWebApp设置为repo,则终端会发出以下命令:

    1. cd MyWebApp

    2. git submodule add git://github.com/jquery/jquery.git externals/jquery 这将创建一个名为 externals / jquery 的目录,并将其链接到 github jquery存储库。现在我们只需要 init 子模块并将代码克隆到它:

    3. git submodule update --init --recursive 您现在应该将所有最新代码克隆到子模块中。如果jquery repo更改并且您想要删除最新代码,则只需再次发出submodule update命令。

      请注意:

      我的项目中通常有许多外部存储库,因此我总是将存储库分组在外部目录下。