Я не думаю, что нарисованная вами диаграмма возможна в одном репозитории Git (учитывая ваши ограничения секретности / и т.д.).Единственный похожий подход, который я могу придумать, чтобы достичь того, чего вы хотите, - это сохранить три ветви: public
, private
и shared
.По окончании shared
коммиты объединяются в public
и private
.Это позволит расхождение между публичными / частными ветками, не беспокоясь о повторном применении diff, потому что коммиты будут фактически объединены и, таким образом, будут настоящими предками, которые git не будет пытаться повторно применить.
Вероятно, вы можете объединить это с вашим желаемым подходом, если захотите, развивая некоторое время в private
, а затем перебирая, чтобы разделить его на части shared
и private
.Затем вы можете объединить общую часть обратно в private
и в public
одновременно.Тогда у вас будет возможное поведение, которое я описал в моем первом абзаце, но оно может развиваться более или менее так, как вы надеялись в своем вопросе.