维护Git分支的最佳方式



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

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

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

  1. 将存储库X克隆到Staging文件夹中。保持此存储库与公司ACME保持同步。
  2. 创建新的存储库Y供我们使用。
  3. 在Repository Y中为"原始"代码创建分支。开发人员将从这个分支或分支。
  4. 手动将文件从Repository X复制到Repository y的"原始"分支

一定有最好的办法。我想创建一个本地分支,并保持更新,同时仍然让我们的开发人员能够提交代码。

这被称为"供应商分支"模式。(考虑在你的文章中添加SO标签)

您还可以将ACME工件嵌入到您的代理中:原始的,未更改的ACME代码将存在于它自己的分支中(所谓的"vendor"-),并将合并到"master"或您需要它的任何地方。

当ACME更改代码时,您签出ACME供应商分支并将更新存储在那里,使用供应商标记标记(这便于查看内部的ACME版本),并在需要的地方合并更改。

Edit added:一旦你理解了这个机制,看看子树合并机制。

在我看来,您可以派生ACME存储库。因此,现在您可以对分叉的存储库(或本地克隆)进行写访问。

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

这样做,当您需要将代码更新到ACME存储库中最新的开发时,您可以简单地从远程提取它们的更改并将它们合并到您的开发分支中。不需要创建该存储库的多个副本。

最新更新