我在github上有一个本地git存储库“中央”存储库。我正在做一个项目的一部分,而一个朋友正在处理一个完全独立的回购中的相关部分,我是否可以直接链接到我朋友的回购?
例如,该应用程序称为小部件。我的所有代码都在小部件/ app / mycode 中,我的朋友正在编写进入小部件/插件/ awesome / hiscode 的代码。
我希望能够始终 http://github.com/mycode/widgets/plugins/hiscode 成为 http://github.com/hiscode/awesome 的直接链接或克隆?
我可能有可能在我的问题或git知识中遗漏一些基本内容,如果是这样,请问,我会很乐意尝试填补空白。
我通过capistrano部署到我的生产网站,所以也许某种类型的脚本可能更容易?我不知道(这就是我发帖的原因)!!
答案 0 :(得分:1)
听起来像子模块是一个很好的解决方案。我不是100%肯定github网址,但这应该让你接近:
git submodule add http://github.com/hiscode/awesome plugins/hiscode
要更新子模块并确保您仍然可以提交“awesome plugin”,您将从您的repoisitory的root执行以下命令:
git submodule update
cd plugins/hiscode
git checkout master
请注意,此时您基本上是嵌套git存储库,而不是实际上是另一个存储库的一部分。
对于SVN用户:这类似于具有特定修订号的subversion的svn:externals属性。执行上述脚本与更新svn属性中的修订号相同。
答案 1 :(得分:1)
正如git submodules, true nature中所述,这可以通过在widgets/plugins/awesome/hiscode
中声明引用http://github.com/hiscode/awesome
的子模块来实现。
然后,您可以定期从该子模块中提取他的最新更改,以便更新它,前提是您再次从widgets/
目录(这是您的“主”项目,即包含子模块的项目)提交)。
这样,您的主项目将记录更新的子模块的新SHA1。
您甚至可以直接在该子模块中进行开发,直接推送到http://github.com/mycode/widgets/plugins/hiscode
(同时仍然提交小部件,再次记录新的SHA1)。
但您需要记住在该子模块中首先检出分支,因为“子模块更新”始终将其初始化/更新为detached head。