什麼是爲您的公司內部使用的項目設置git回購的最佳方式,但是您還希望開源(但具有可能修改的歷史記錄)?Git回購:內部和開源外部分支機構
比方說,Acme公司有一個回購「supercoolproject」。他們想要開源,但實際上並不需要公司名稱。他們使用其開發人員的名字(或團體等)設置了一個GitHub帳戶,並創建回購。他們將其克隆到內部的Acme服務器。沒有提到「Acme」。
現在出現了這個問題 - 在任何組織中,都有開發人員瞭解開放源代碼並被授權公開推送一些代碼。還有其他人不明白所有的細微差別。當其中一個提交時,可能包含公司名稱或其他專有信息。或者,他們只是做了一個可以在內部恢復的可怕提交(而不是重寫歷史記錄 - 我只是在談論添加「還原」提交)。但是,您不希望這些專有提交進入開源分支。因此,你創建了「acme_internal_ {dev,qa,production}」分支和一個外部「master」分支(也許還有其他人)。保持同步的最佳方式是什麼?您想接受開源回購上的提交。你想推動(大部分)你的內部提交。但有一些不應該出去。
看來,合併內部 - >外部是一件壞事,因爲你不能刪除壞的提交。外部分支可以在內部分支上重新分配,但似乎只要一次「修改rebase -i acme/acme_internal_dev」並修改歷史記錄(更改提交消息,刪除提交等),您就不能再分配,因爲兩個歷史分歧。那麼,你最終會挑選所有內部提交到公共分支,然後將公共分支合併到內部樹中嗎?這看起來也很醜陋,因爲你最終會在內部重複提交(原始文件,然後選擇進入外部並被合併回內部)。
爲了這個問題的目的,我們假設Acme內部想要避免在其內部分支上重寫歷史記錄(實際上是刪除/修改壞通信)。
最好的解決方案(你想從外部看到的分支,但有一些只在內部可用的提交)是櫻桃採摘。對不起,說。 – Greg