ACME公司保留我们扩展和定制的产品X。他们已经使他们的git仓库对我们可见,但我们无法对其进行写操作。 ACME正在将自己的内部Git服务器与Gitolite一起使用。

我们的开发人员想要对其进行写入,因此我们需要本地副本。但是,很高兴保留ACME公司的提交历史记录。有办法吗?另外,如何使用ACME公司的代码更新代码?我们正在使用Github Enterprise。

我的思维方式使ACME公司失去了历史。

  • 将存储库X克隆到暂存文件夹中。使该存储库与ACME公司保持同步。
  • 创建新的存储库Y供我们使用。
  • 在存储库Y中为“原始”代码创建分支。开发人员可以从中分支或 fork 。
  • 手动将文件从存储库X复制到存储库Y的“原始”分支。

    一定有最好的方法。我本质上是想制作一个本地派生并保持更新,同时仍使我们的开发人员可以访问提交代码。

    最佳答案

    这称为“供应商分支”模式。 (考虑将这些SO标签添加到您的帖子中。)

    您还可以在您的代表中嵌入ACME工件:原始的,未更改的ACME代码将驻留在其自己的(所谓的“供应商”-)分支上,并将 merge 到“master”或任何您需要的地方。

    每当ACME更改代码时,您都将 checkout ACME供应商分支并将更新存储在此处,并使用供应商标签进行标记(这便于查看内部的ACME版本),并在需要时 merge 更改。

    编辑添加的:一旦了解了这种机制,就看看subtree merge mechanism

    关于git - 维护Git叉的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25391698/

  • 10-10 13:29