保持Git fork的最佳方法

时间:2014-08-19 19:40:02

标签: git github branch vendor

公司ACME保留了我们扩展和定制的产品X.他们让我们的git存储库可见,但我们不能写它。 ACME正在使用他们自己的内部Git服务器和Gitolite。

我们的开发人员想要写它,所以我们需要一个本地副本。但是,我很高兴保留公司ACME的提交历史记录。有办法吗?另外,我应该如何使用公司ACME的代码更新我们的代码?我们正在使用Github Enterprise。

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

  1. 将存储库X克隆到Staging文件夹中。从ACME公司保持此存储库最新。
  2. 创建新的存储库Y供我们使用。
  3. 在存储库Y中为“原始”代码创建分支。开发人员可以从中分支或分叉。
  4. 将文件从Repository X手动复制到Repository Y的“Original”分支。
  5. 必须有最好的方法。我本质上想要创建一个本地fork并保持更新,同时仍然允许我们的开发人员访问提交代码。

2 个答案:

答案 0 :(得分:2)

这被称为"供应商分支"图案。 (考虑将这些SO标签添加到您的帖子中。)

您还可以在您的代表中嵌入ACME文字:原始的,未更改的ACME代码将独立存在(所谓的"供应商&#34 ;-)分支,并将合并到'主'或者无论你需要它。

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

编辑已添加:了解此机制后,请查看subtree merge mechanism

答案 1 :(得分:1)

在我看来,你可以分叉ACME存储库。所以现在你可以对forked存储库(或本地克隆)进行写访问。

现在,您可以在此本地存储库中创建一个新分支,以继续开发,同时保持与原始只读存储库链接的主分支(或将其重命名为适合您需要的分支)。

这样做,每当您需要将代码更新为ACME存储库中的最新开发时,您只需从该远程处获取更改并将它们合并到您的开发分支。无需创建该存储库的多个副本。