我是一个开源项目,以前有专有代码,所以我不想发布它的全部历史。我使用这些命令创建一个孤立的分支:
git checkout -b opensource-prep
... changed a bunch of code, add open source license, etc.
git commit -m "Prep for open source"
git checkout --orphan opensource opensource-prep
git commit -m "Open source release"从那以后,我向大师提出了更多的改变,并融入了开源准备。如何在不公开整个历史的情况下将新代码发布到开放源码分支?我也想确保它是正确的,以便那些可能已经分叉开放资源的人可以安全地拉动最新的变化。
发布于 2014-07-21 07:03:10
Git的自动化机制将失败,因为它们将无法找到共同的祖先:从技术上讲,您的两个分支不共享任何公共提交,因为有关父级的信息是提交的一部分。所以简单的合并或重新定位在这里是没用的。
IMHO,发布您的新更改的最干净的方法是创建一个新的孤立分支,并将开放源码分支的旧状态与我们的策略合并:用户将看到他们缺少您的私有历史,但仍然能够从您的存储库中提取,因为它记录了新版本取代了旧版本。
另一种选择是将upsteam设置为opensource-prep树中的提交,用于最后一次提交到开放资源分支(我在下面称为<commit> ),branch设置为开放资源准备,onto设置为开放资源。请注意,这将覆盖opensource-prep分支,因此您需要使用副本,即
git checkout -b opensource-new opensource-prep
git rebase [-i] <commit> opensource-new --onto opensource
git branch -M opensource-new opensourcehttps://stackoverflow.com/questions/24741613
复制相似问题