Git在推送期间使用远程源

时间:2010-05-28 02:09:56

标签: git github capistrano

我在github上有一个本地git存储库“中央”存储库。我正在做一个项目的一部分,而一个朋友正在处理一个完全独立的回购中的相关部分,我是否可以直接链接到我朋友的回购?

例如,该应用程序称为小部件。我的所有代码都在小部件/ app / mycode 中,我的朋友正在编写进入小部件/插件/ awesome / hiscode 的代码。

我希望能够始终 http://github.com/mycode/widgets/plugins/hiscode 成为 http://github.com/hiscode/awesome 的直接链接或克隆?

我可能有可能在我的问题或git知识中遗漏一些基本内容,如果是这样,请问,我会很乐意尝试填补空白。

我通过capistrano部署到我的生产网站,所以也许某种类型的脚本可能更容易?我不知道(这就是我发帖的原因)!!

2 个答案:

答案 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