我想将现有项目(托管在GitHub上)作为我项目的一部分(放入子目录),同时保持历史和更新该项目的能力.我发现可以有三种方法:
fork原始项目,将原始内容移动到子目录中并将其推送到我的GitHub仓库.
初始化一个新的repo,用现有的repo 做一个子树合并并推送到我的GitHub repo.
克隆现有仓库,创建一个新的主仓库,将克隆仓库作为子模块放入主仓库中,推送.
(1)变体可能是GitHub的优选变体,因为它们可能共享源.但从逻辑上讲,我的项目不是现有项目的分支.而现有的只是一个模块.此外,我不确定将现有代码移动到子目录中是否可能不会出现问题.我可能更喜欢(2)变体,因为只有一个回购.(3)需要与几个回购合作,但逻辑上是最接近我的情况.
我对此进行了相当多的研究,但我并不确定.在这种情况下你会推荐什么?先感谢您!
如果两个项目(GitHub和你的项目)的开发生命周期不同,那么子模块方法会更好.
即:如果您在没有系统地更改其他GitHub项目的情况下更改项目,那么您应该考虑子模块方法.
但是,要实现这一点,您需要(1)和(3)的组合:
如果你不能直接贡献(推送)到GitHub项目,你需要分叉它(1).
那么你需要将该分叉项目作为项目中的子模块引用(3).
它允许您引用GitHub项目的一个特定修订版,同时允许您更新该子模块并对其进行特定推送(如" 子模块的真实性质 "中所述).
但是,一旦更新了子模块,就不要忘记提交项目(子模块的"父项目"),以便注册您现在引用的子模块的新版本.