我找到了一个GitHub项目,它使用了git子模块。git子模块的用法是什么?如何创建git子模块?它们与子树有何不同?
9udxz4iz1#
git仓库中的子模块就像一个子目录,它实际上是一个独立的git仓库。当你有一个依赖于其他项目的特定版本的git项目时,这是一个有用的功能
Git子树允许你插入任何仓库作为另一个仓库的子目录,这个子目录将成为超级项目的永久部分
子树合并将子树的内容和历史永久地集成到合并子树的父存储库中。子模块只是对子模块中特定提交的引用。被引用提交的更改历史保存在父模块中,但父模块中不会跟踪子模块的内容或历史。
1.子模块非常非常容易引用和使用。假设您已经将MyWebApp设置为repo,从终端发出这些命令:
cd MyWebApp
git submodule add git://github.com/jquery/jquery.git externals/jquery
git submodule update --init --recursive
我的项目中通常有许多外部存储库,所以我总是将存储库分组在externals目录下。
1条答案
按热度按时间9udxz4iz1#
git仓库中的子模块就像一个子目录,它实际上是一个独立的git仓库。当你有一个依赖于其他项目的特定版本的git项目时,这是一个有用的功能
Git子树允许你插入任何仓库作为另一个仓库的子目录,这个子目录将成为超级项目的永久部分
子树合并将子树的内容和历史永久地集成到合并子树的父存储库中。
子模块只是对子模块中特定提交的引用。被引用提交的更改历史保存在父模块中,但父模块中不会跟踪子模块的内容或历史。
1.子模块非常非常容易引用和使用。假设您已经将MyWebApp设置为repo,从终端发出这些命令:
cd MyWebApp
git submodule add git://github.com/jquery/jquery.git externals/jquery
这将创建一个名为 externals/jquery 的目录,并将其链接到 github jquery repository。现在我们只需要 init 子模块并将代码克隆到它:git submodule update --init --recursive
现在你应该已经把所有最新的代码克隆到子模块中了。如果jquery仓库发生了变化,你想把最新的代码拉下来,只需要再次发出子模块更新命令。我的项目中通常有许多外部存储库,所以我总是将存储库分组在externals目录下。