我想创建一个 pull 远程仓库的仓库。
例如,假设 jQuery 作为子模块:
git://github.com/jquery/jquery.git
使用 jQuery 作为子模块创建存储库并将我自己的外部添加为远程存储库的过程是什么。
此外,一旦设置完毕,如果我推/pull 到我自己的 Remote ,外部会保持完好吗?
最佳答案
- 您有一个项目 -- 称它为 MyWebApp,它已经有一个 github 存储库
- 您想在您的项目中使用jquery 存储库
- 您想将 jquery 存储库作为子模块 pull 入您的项目。
子模块真的非常容易引用和使用。假设您已经将 MyWebApp 设置为存储库,从终端发出这些命令:
cd MyWebApp
git submodule add git://github.com/jquery/jquery.git externals/jquery
这将创建一个名为 externals/jquery
* 的目录,并将其链接到 github jquery 存储库。现在我们只需要初始化子模块并将代码克隆到它:
git submodule update --init --recursive
您现在应该已将所有最新代码克隆到子模块中。如果 jquery 存储库发生变化并且您想 pull 下最新的代码,只需再次发出 submodule update
命令即可。请注意:我的项目中通常有许多外部存储库,因此我总是将存储库分组在“externals”目录下。
在线Pro Git Book以易于阅读的方式呈现了一些关于子模块(和一般的 git)的好信息。或者,git help submodule
也会提供有用的信息。或者看看 Git Submodule Tutorial在 git wiki 上。
我注意到这篇博客文章讨论了子模块并将它们与 Subversion 的 svn:externals 机制进行了比较:http://speirs.org/blog/2009/5/11/understanding-git-submodules.html
* 作为最佳实践,您应该始终将子模块放在它们自己的目录中,例如 Externals。如果不这样做,您的项目根目录会很快变得非常困惑。
关于git - 如何设置 git 项目以使用外部 repo 子模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2140985/