维护Git fork的最佳方法

bqjvbblv  于 5个月前  发布在  Git
关注(0)|答案(2)|浏览(87)

ACME公司保留了一个产品X,我们可以对其进行扩展和定制。他们让我们看到了他们的git存储库,但我们不能对其进行写入。ACME正在使用他们自己的Git服务器和Gitolite。
我们的开发人员想要写入它,所以我们需要一个本地副本。然而,我很乐意保留ACME公司的提交历史记录。有没有办法做到这一点?还有,我应该如何使用ACME公司的代码更新我们的代码?我们正在使用Github Enterprise。
我的想法失去了ACME公司的历史。
1.将存储库X克隆到暂存文件夹中。从公司ACME保持此存储库最新。
1.创建新的仓库Y供我们使用。
1.在资源库Y中为“原始”代码创建分支。开发人员可以从中创建分支或分叉。
1.将文件从存储库X手动复制到存储库Y的“原始”分支。
一定有一个最好的方法。我基本上想做一个本地分支,并保持更新,同时仍然让我们的开发人员访问提交代码。

iyfamqjs

iyfamqjs1#

这就是所谓的“供应商分支”模式。(考虑将这些SO标签添加到您的帖子中。)
您还可以将ACME工件嵌入到您的rep中:原始的、未更改的ACME代码将存在于其自己的(所谓的“供应商”-)分支中,并将被合并到“主”或您需要的任何地方。
无论何时ACME更改代码,您都可以 checkout ACME供应商分支并将更新存储在那里,使用供应商标记进行标记(这便于查看内部ACME的版本),并在需要时合并更改。

Edit added:一旦你理解了这个机制,看看subtree merge mechanism

7ajki6be

7ajki6be2#

在我看来,你可以fork ACME仓库。所以现在你有写权限到你的fork仓库(或本地克隆)。
现在,您可以在这个本地存储库中创建一个新的分支来继续您的开发,同时仍然保持主分支(或将其重命名为适合您需要的名称)与原始只读存储库的链接。
这样一来,无论何时需要将代码更新到ACME存储库中的最新开发,您都可以简单地从该远程获取更改并将其合并到您的开发分支中。无需创建该存储库的多个副本。

相关问题