Git: 如何处理项目中的Git库

26

我有一个Xcode项目,它本身具有Git源代码控制。在一个名为Libraries的文件夹中,我克隆了另外八个来自GitHub的Git项目。它们位于我的Git仓库内,并且我已将所有这些库添加到我的git提交中。

是否有一种方法可以让git从它们的仓库下载它们的代码,而不是将所有这些git库的代码包含到我的仓库中呢?或者将其他git仓库包含到项目中是否正常?


https://dev59.com/9HI95IYBdhLWcg3wzhZ9 - tobiasbayer
2个回答

29

当然可以按照以下步骤操作:

  1. 删除你可能已经添加的第三方文件夹
  2. 打开终端并执行以下命令

    cd /path/to/your/main/repo
    git submodule add git@github.com:someuser/somerepo.git somerepo
    git commit -m "Added submodules"
    
  3. 现在,你不再需要复制这些文件,而是在你的项目中引用其他仓库:

编辑:

如果你想将子模块更新到最新的提交,可以执行以下操作:

cd somerepo
git pull # You can also checkout a branch / tag etc.
cd ..
git add somerepo
git commit -m "Telling the main repo to update the reference to the referenced repo"

谢谢。我可以用这个命令代替吗 git submodule add https://github.com/AlanQuatermain/AQGridView.git Libraries/AQGridView 而不是 git@github.com:... - dhrm
我该如何更新这些子模块?当我拉取我的仓库时,它们是否会自动被拉取,还是我需要进入它们的文件夹并执行 git pull 命令? - dhrm
@DennisMadsen 是的,你可以执行 git pull 命令来拉取 somerepo 中的任何更改,但是你还需要告诉你的主要代码库更新引用。请参考我的更新帖子。顺便说一句:我发现子模块非常方便,因为你不必复制已经通过 git 可以访问的存储库中的代码。 - Besi
@DennisMadsen:你可以使用Git接受的任何存储库路径;SSH、HTTP(S)、本地路径等。 - Justin ᚅᚔᚈᚄᚒᚔ
对于任何感兴趣的人。这些屏幕截图是使用Git Tower完成的,我可以推荐使用它。 - Besi

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接