2012-04-28 100 views
40

我是否会遇到任何问题,如果我git克隆到现有的git回购的回购?Git克隆到另一个现有的Git回购

为了简化起见,我正在开发一个库“lib /”,它应该可用于我的所有项目。这是一个单独的git回购。我想将这个lib /导入到我的所有项目中,并且只在一个地方更新它,不要从任何项目中触及它,只是使用它。

我假设这是好的,只是想知道是否有什么我应该小心。谢谢!

+2

这对我来说很难说,如果这正是我要找的......似乎有点复杂。 – botbot 2012-04-28 07:18:26

+0

@masterkrang你确实需要子模块。 :)起初他们有点复杂,就像git本身,但复杂性是值得的。 – Ashe 2012-04-28 07:53:32

+0

哈哈。好吧,我现在相信它,我*做*需要submodules。非常感谢,Maxpm和@Arlen Cuss。当我精力充沛的时候,我会尽力解决那个野兽。 – botbot 2012-04-28 08:04:57

回答

32

只是为了记录在案,可以克隆中另一个的混帐回购协议:您的lib目录下
一切都会被包围的Git回购被忽略,因为说lib目录包含.git

所以它的工作,但封闭回购根本不知道:

  • 它需要从另一个回购一lib目录
  • 它需要一个特定修订版lib的正确建立

这些正是由回购(封闭的)记录的两个信息以便r参考a submodule
它使您能够访问固定修订您的回购协议中的另一个回购,但正如“子模块的真实性质”中所解释的那样,这并不妨碍您在您的父回购库中直接在本地修改lib
(只要你在lib第一次提交您的修改,然后去上一级回到你父母回购,并承诺有作为)

到您的主项目的任何贡献的主要好处是,当他们将克隆所述项目,如果它被声明为子模块(如在“Git Submodule Workflow Advice”中所述),他们将知道他们也需要lib

+0

这使@VonC很有道理。感谢您的信息。我有点想你可以克隆到现有的git repo中,但不确定git会如何处理它。忽略它似乎优雅和合乎逻辑。在现有的回购库中运行测试似乎并不安全。测试一个缩小版本似乎不够真实世界,所以我想我会期待社区。最后一件我想要的是当s ***击中粉丝时,在回购里面的一个不起眼的回购。再次感谢! – botbot 2012-04-28 21:57:18

+1

这似乎是一个很好的地方发布一个超级简单的例子(或链接到例子)如何启动一个git回购以及如何克隆或添加sumodule – botbot 2012-04-28 22:11:46

+3

+1 @VonC实际回答问题,并解释克隆到回购和使用子模块之间的微妙关系,我敢打赌,这是很多人问的问题。 – 2012-09-16 21:41:47