为贵公司内部使用的项目设置 git 存储库的最佳方法是什么,但您也想开源(但可能会修改历史)?
假设 Acme 公司有一个回购“supercoolproject”。他们想要开源它,但他们实际上根本不想要与它相关联的公司名称。他们以其中一个开发人员的名字(或组等)建立了一个 GitHub 帐户,并创建了 repo。他们将其克隆到内部 Acme 服务器。没有地方提到“Acme”。
现在问题来了——在任何给定的组织中,都有了解开源并被授权公开一些代码的开发人员。还有其他人不了解所有细微差别。当其中一个提交时,它们可能包括公司名称或其他一些专有信息。或者,他们只是做了一个可怕的提交,可以在内部恢复(不是重写历史——我只是在谈论添加一个“恢复”提交)。但是,您不希望那些专有提交进入开源分支。
因此,您创建“acme_internal_{dev,qa,production}”分支和一个外部“主”分支(可能还有其他)。使它们保持同步的最佳方法是什么?您想接受对开源存储库的提交。并且您想将(大部分)内部提交推送出去。但也有一些不应该出去的。
似乎合并 internal -> external 是一件坏事,因为您无法删除错误的提交。可以在内部分支上重新定位外部分支,但似乎一旦您“git rebase -i acme/acme_internal_dev”一次并修改历史记录(更改提交消息,删除提交等),您就不能再重新设置,因为两种历史不同。那么,您最终是否会挑选所有内部提交到公共分支,然后将公共分支合并到内部树中?这看起来也很丑陋,因为您最终会在内部重复提交(原始提交,然后是进入外部并合并回内部的精心挑选的提交)。
出于这个问题的目的,我们假设 Acme 在内部希望避免在其内部分支上重写历史记录(实际上是删除/修改错误的提交)。