如何制作源自封闭源项目的开放源代码分叉?

时间:2019-05-29 16:21:06

标签: git

我要分担一部分(但不是全部)封闭源项目,以使之成为一个开放源代码。到目前为止,我已经建立了一个分支(“ open”),从中删除了我们 不打算开放源代码的功能。

现在,我现在可以导出“ open”分支并将其签入到一个新的空仓库中,该仓库成为开源版本。

但是,我想保持在开放源代码版本和封闭源代码版本之间同步更改的能力:即,如果我们以后在封闭源代码中修复错误,则也将修复同步到开放源代码版本(反之,如果贡献者同意)。

在不公开“开放”分支(即封闭分支)历史的情况下,有没有办法实现这一目标?

1 个答案:

答案 0 :(得分:1)

由于git存储将更改集提交为更改集,因此您可以轻松地将一个存储库的更改樱桃挑选到另一个存储库(当然,如果存在相同的更改文件,并且它们之间的差异不大)。

实现此目的的一种方法是将两个“源”添加为单个回购克隆的远程对象。 然后从两个远程获取所有提交(这样您就有可用的提交哈希)。 然后,您可以签出一个遥控器的分支,并像选择其他任何单个远程回购樱桃签一样,选择另一个遥控器的提交。

在一个非常容易理解的示例中,是这样的:

git clone git://blablabla.git mydoublerepo
cd mydoublerepo
git remote add other git://other.git
git fetch other
git checkout -b other_master -t other/master
git cherry-pick origin/master # cherry-picks the top commit off of the other remote's master branch

请注意,您无需为此创建单独的克隆,您可以将任何存储库作为远程添加到任何其他克隆的存储库。