2012-03-07 4 views
3

Я разработал проект клиента с использованием частного репо в GitHub. Теперь мы хотим открыть определенную часть и создать версию проекта с открытым исходным кодом. Идея состоит в том, что версия клиента будет построена на этом. Любые изменения, внесенные в версию с открытым исходным кодом, должны также поступать в частный.Перемещение с частной реплики GitHub на общественную и частную

Проблема в том, что я не могу просто установить текущую репо GitHub для всех. Существуют определенные фрагменты кода, которые должны оставаться доступными только для клиента. Итак, к актуальному набору вопросов:

  1. Возможно ли установить пару репозиториев GitHub, чтобы родительский объект был общедоступным, а вилка осталась частной?
  2. Могу ли я стереть некоторые файлы и их историю из репо? (Если возможно, я мог бы просто добавить их туда снова.)

Я думаю, что я мог бы начать репо с нуля, а затем работать на основе этого, но в этом случае я потерял бы ценную историческую информацию.

Любые идеи приветствуются. При необходимости я могу предоставить вам более подробную информацию.

ответ

4

Вы можете попробовать разделить проект на две части, а затем использовать git submodule для их соединения.

Родительский проект, который является приватным, может содержать проект подмодуля, который является общедоступным.

Для получения более подробной информации см. http://help.github.com/submodules/.

+0

Это, вероятно, билет, да. Нужно выяснить какой-то хороший способ сделать это таким образом. Думаю, у меня могло бы быть три таких проекта: A (private, зависит от C), B (public, зависит от C), C (public, содержит общий бит). –

4

Что касается 2-я части Вашего вопроса:

Вы можете использовать git filter-branch удалить файлы или целые каталоги из вашей истории.

Также смотрите вопрос: How do I remove sensitive files from git's history.

+0

Спасибо! Добавлен +1 для вас. Жаль, что нельзя согласиться. : S –

Смежные вопросы