5

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

我们的开发人员想要写入它,所以我们需要一个本地副本。但是,我很乐意保留 ACME 公司的 Commit 历史记录。有没有办法做到这一点?另外,我应该如何使用公司 ACME 的代码更新我们的代码?我们正在使用 Github Enterprise。

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

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

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

4

2 回答 2

3

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

您还可以将 ACME 人工制品嵌入您的代表中:原始的、未更改的 ACME 代码将独立存在(所谓的“供应商”-)分支,并将合并到“主”或您需要的任何地方。

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

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

于 2014-08-20T14:32:44.310 回答
1

在我看来,您可以分叉 ACME 存储库。因此,现在您拥有对分叉存储库(或本地克隆)的写入权限。

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

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

于 2014-08-19T20:05:04.557 回答