Git克隆到另一个现有的Git回购

bot*_*bot 48 git

如果我将一个repo克隆到现有的git repo中,我会遇到任何问题吗?

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

我假设这没关系,只是想知道是否有什么我应该注意的.谢谢!

Von*_*onC 44

只是为了记录,你可以在另一个中克隆一个git repo:封闭的Git repo会忽略
lib目录下的所有东西,因为所说的lib目录包含一个.git.

所以它会起作用,但封闭的回购会不知道:

  • 它需要lib来自另一个仓库的目录
  • 它需要一个特定的版本lib才能正确构建,即使它会记录嵌套的librepo树的SHA1 .(这是一个gitlink,父repo索引中的一个特殊条目)
    这意味着克隆封闭的repo,你将得到一个空的" lib/"文件夹.

那些(repo URL和repo SHA1)正是 repo(封闭的)记录的两个信息,以便引用一个子模块.
它是由给你访问一个固定的存放区中的另一个回购的修改,但作为"子模块的真性情",这并不妨碍你在本地修改说明lib你的父母回购中直接.
(只要您首先提交修改lib ,然后在父级仓库中返回一级,并在那里提交)

主项目的任何贡献者的主要好处是,当他们克隆所述项目时,lib如果它被声明为子模块,他们将知道他们也需要(如" Git子模块工作流建议 "中所述).

  • +1 @VonC用于实际回答问题,并解释克隆到回购和使用子模块之间的微妙之处,我敢打赌这是很多人都在问的问题. (3认同)
  • 这似乎是发布超简单示例(或示例的链接)的好地方,该示例有关如何初始化git repo以及如何克隆或添加sumodule (2认同)

bot*_*bot 8

我发现如果您没有太多的经验,那么在本教程之后有助于理解子模块.

http://help.github.com/submodules/

http://chrisjean.com/2009/04/20/git-submodules-adding-using-removing-and-updating/