我想创建一个可以拉入远程仓库的仓库.
例如,假设jQuery为子模块:
git://github.com/jquery/jquery.git
使用jQuery作为子模块创建repo并将我自己的外部添加为远程repo的过程是什么.
一旦设置好,如果我推/拉到我自己的遥控器,外部是否保持完整?
你有一个项目 - 称之为已经拥有github 仓库的MyWebApp
您想在项目中使用jquery存储库
您希望将jquery repo作为子模块提取到项目中.
子模块真的很容易引用和使用.假设您已将MyWebApp设置为repo,则从终端发出以下命令:
cd MyWebApp git submodule add git://github.com/jquery/jquery.git externals/jquery
这将创建一个名为externals/jquery
*的目录,并将其链接到github jquery存储库.现在我们只需要初始化子模块并将代码克隆到它:
git submodule update --init --recursive
您现在应该将所有最新代码克隆到子模块中.如果jquery repo发生更改并且您想要删除最新代码,请submodule update
再次发出命令.请注意:我的项目中通常有许多外部存储库,因此我总是将存储库分组在"externals"目录下.
在线Pro Git Book有一些关于子模块(和一般git)的一些很好的信息,以易于阅读的方式呈现.或者,git help submodule
也会提供良好的信息.或者看看git wiki上的Git Submodule Tutorial.
我注意到这个博客文章讨论了子模块并将它们与Subversion的svn:externals机制进行了比较:http://speirs.org/blog/2009/5/11/understanding-git-submodules.html
*作为最佳实践,您应始终将子模块放在自己的目录中,例如Externals.如果不这样做,您的根项目目录可能会非常快速地混乱.
您需要知道的大部分内容已经得到了解答,所以我不打算解决这个问题,但是,我发现了一小段通常缺失的信息.
如您所知,"git pull"不会更新子模块,"git submodules update"也不会下载这些子模块的最新HEAD.
要将所有子模块更新为最新的上游修订版,您可以使用
git submodule foreach git pull
如果你经常改变你的子模块,并且有很多,那么"git foreach"将变得非常宝贵.