代码之家  ›  专栏  ›  技术社区  ›  Bohumir Zamecnik

Git/GitHub:fork、子树合并或外部代码的子模块?

  •  22
  • Bohumir Zamecnik  · 技术社区  · 14 年前

    我想把一个现有的项目(在GITHUB上托管)作为我项目的一部分(进入子目录),同时保持历史和更新项目的能力。我发现大概有三种方法:

    1. 叉子 原始项目,将原始内容移动到子目录中,并将其推送到GitHub repo。
    2. 启动新回购,执行 子树合并 与现有回购,并推到我的GITHUB回购。
    3. 克隆现有回购,制作一个新的主回购,将克隆回购作为主回购 子模块 ,推。

    (1)变体可能是GitHub的首选,因为它们可能共享源代码。但从逻辑上讲,我的项目不是现有项目的岔口。而现有的只是一个模块。此外,我不确定是否将现有代码移动到子目录可能不会产生问题。 我可能更喜欢(2)变体,因为只有一个回购协议。(3)需要与多个回购协议合作,但逻辑上最接近我的情况。

    我已经研究了很多,但我不确定。在这种情况下你有什么建议?提前谢谢你!

    1 回复  |  直到 14 年前
        1
  •  7
  •   Community CDub    8 年前

    如果两个项目(GitHub上的项目和您的项目)的开发生命周期不同,那么子模块方法更好。
    例如:如果您在不需要系统地更改其他GitHub项目的情况下更改项目,那么您应该考虑子模块方法。

    但是,要实现这一点,您需要(1)和(3)的组合:

    • 如果您不能直接为GitHub项目贡献(push),那么您需要分叉它(1)。
    • 然后,您需要将该分叉项目引用为项目中的子模块(3)。

    它将允许您引用GitHub项目的一个特定版本,同时允许您更新该子模块并对其进行特定的推送(如 true nature of submodules ").
    但是,一旦更新了子模块,不要忘记提交您的项目(子模块的“父项目”),以便注册您正在引用的子模块的新版本。

    推荐文章