什么是为您的公司内部使用的项目设置git回购的最佳方式,但是您还希望开源(但具有可能修改的历史记录)?Git回购:内部和开源外部分支机构
比方说,Acme公司有一个回购“supercoolproject”。他们想要开源,但实际上并不需要公司名称。他们使用其开发人员的名字(或团体等)设置了一个GitHub帐户,并创建回购。他们将其克隆到内部的Acme服务器。没有提到“Acme”。
现在出现了这个问题 - 在任何组织中,都有开发人员了解开放源代码并被授权公开推送一些代码。还有其他人不明白所有的细微差别。当其中一个提交时,可能包含公司名称或其他专有信息。或者,他们只是做了一个可以在内部恢复的可怕提交(而不是重写历史记录 - 我只是在谈论添加“还原”提交)。但是,您不希望这些专有提交进入开源分支。因此,你创建了“acme_internal_ {dev,qa,production}”分支和一个外部“master”分支(也许还有其他人)。保持同步的最佳方式是什么?您想接受开源回购上的提交。你想推动(大部分)你的内部提交。但有一些不应该出去。
看来,合并内部 - >外部是一件坏事,因为你不能删除坏的提交。外部分支可以在内部分支上重新分配,但似乎只要一次“修改rebase -i acme/acme_internal_dev”并修改历史记录(更改提交消息,删除提交等),您就不能再分配,因为两个历史分歧。那么,你最终会挑选所有内部提交到公共分支,然后将公共分支合并到内部树中吗?这看起来也很丑陋,因为你最终会在内部重复提交(原始文件,然后选择进入外部并被合并回内部)。
为了这个问题的目的,我们假设Acme内部想要避免在其内部分支上重写历史记录(实际上是删除/修改坏通信)。
最好的解决方案(你想从外部看到的分支,但有一些只在内部可用的提交)是樱桃采摘。对不起,说。 – Greg