答案 0 :(得分:8)
Git子模块:
git存储库中的子模块就像一个子目录,它本身就是一个独立的git存储库。当你在git中有一个依赖于其他项目的特定版本的项目时,这是一个很有用的功能
Git子树:
Git子树允许您将任何存储库作为另一个存储库的子目录插入。子目录将成为超级项目的永久部分
Git子树和子模块:
子树合并将子树的内容和历史永久地集成到合并子树的父存储库中。
子模块只是对子模块中特定提交的引用。引用提交的更改历史记录保留在父模块中,但不会在父模块中跟踪子模块的内容或历史记录。
配置Git子模块:
你有一个项目 - 称之为已经有github仓库的MyWebApp
您想在项目中使用jquery存储库
您希望将jquery repo作为子模块提取到项目中。
子模块非常容易引用和使用。假设您已将MyWebApp设置为repo,则终端会发出以下命令:
cd MyWebApp
git submodule add git://github.com/jquery/jquery.git externals/jquery
这将创建一个名为 externals / jquery 的目录,并将其链接到 github jquery存储库。现在我们只需要 init 子模块并将代码克隆到它:
git submodule update --init --recursive
您现在应该将所有最新代码克隆到子模块中。如果jquery repo更改并且您想要删除最新代码,则只需再次发出submodule update命令。
请注意:
我的项目中通常有许多外部存储库,因此我总是将存储库分组在外部目录下。