维护Git叉的最佳方法

Rom*_*lTJ 5 git branch github vendor

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

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

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

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

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

axd*_*axd 4

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

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

每当 ACME 更改代码时,您都会签出 ACME 供应商分支并将更新存储在那里,使用供应商标签进行标记(这可以轻松查看内部的 ACME 版本),并在需要时合并更改。

编辑补充:一旦你理解了这个机制,就看看子树合并机制