代码之家  ›  专栏  ›  技术社区  ›  keparo

如何使用Git将多个项目分叉到一个存储库中?

  •  5
  • keparo  · 技术社区  · 15 年前

    我有三个项目要交。它们都是相互关联的——改变一个可能需要改变另一个。因为它们都是相关的,所以我想为forks创建一个存储库,同时保持从每个原始文件中下拉更新的能力。

    如何设置Git存储库?

    这些都是初步的想法,所以如果这是疯狂/愚蠢的,我不会感到惊讶。它是?

    4 回复  |  直到 15 年前
        1
  •  3
  •   Jakub Narębski adamtaub    15 年前

    你可以一直使用” git remote add <name> <url> “添加更多存储库作为源。

        2
  •  6
  •   Konstantin Tenzin    15 年前

    你可能对 git-submodule 功能。引用 here :

    Git的子模块支持允许 要包含的存储库,作为 子目录,签出 外部项目。子模块维护 他们自己的身份;子模块 支持只存储子模块 存储库位置和提交ID,所以 其他克隆 包含项目(“超级项目”)。 可以轻松克隆所有子模块 同一版本。部分签出 超级项目的可能性是:你 可以告诉Git不克隆、部分克隆或 所有子模块。

        3
  •  2
  •   Bruno Reis    15 年前

    有一种可能,我从来没有尝试过“真正的”,但这可能会很好地工作。

    假设你有三个创造性的项目 投射1 , 项目2 还有(猜猜看) 投影3 . 我们还可以说,它们全部或部分依赖于外部库,例如 LIB1.DLL 还有一个叫 超级链接库 .

    首先,对于文件夹结构,我将执行如下操作:

    MyCode\
        build_all.bat
        Docs\
            [...]
        Libs\
            Lib1.dll
            SuperLib.dll
        Proj1\
            [...]
        Proj2\
            [...]
        Proj3\
            [...]
    

    然后在每个projx文件夹上创建一个存储库:

    cd \MyCode\Proj1
    git init
    cd \MyCode\Proj2
    git init
    cd \MyCode\Proj3
    git init
    

    然后您将为整个系统创建一个存储库:

    cd \MyCode
    git init
    

    对于git,此存储库的内容将是 Libs 文件夹及其内容 build_all.bat 构建脚本和3个子项目。

    因此,一旦您更改了源代码,我们假设 Proj1\Main.cs , the 整件事 不会看到修改。你必须这样做 git commit 在Proj1上,然后您将转到 整件事 然后 GIT提交 它(现在Git将能够看到Proj1已被修改)。

    使用这种方法,历史的 整件事 只需声明何时修改projx,但它不会直接跟踪单个文件。但是,正如预期的那样,Projx上的存储库会像往常一样跟踪每个文件。

    如果你尝试一个“真正的项目”,让我知道结果!

    祝你好运!

        4
  •  1
  •   keparo    15 年前

    我想我应该用 subtree merge strategy . 我真的要试试看它是否有效。如果这是一个好方法,我会把这个答案标为接受。

    同时,我仍然乐于接受建议。