Синхронизация изменений в нескольких ветках, как сделать?

Существует некий проект, который использует GIT. До некоторого времени там была одна ветка, которая просто пушилась на гитхаб, и на локальный сервер.
Теперь в проекте появились некоторые модули, которые мы не хотим выкладывать в общий доступ, однако, хотим продолжать выкладывать на гитхаб исправления существующих глюков и новые фичи.
Дело осложняется тем, что в локальной develop-ветке хочется коммитить чаще — после каждого серьезного исправления, так легче отслеживать, на каком исправлении что-то сломалось, или возвращаться к предыдущей версии кода. Однако, на гитхаб и локальный сервер лучше отправлять большие коммиты с уже готовыми функциями — так людям со стороны проще отслеживать, что изменилось.

Итого, у нас получается три сущности — develop-ветка, в которую попадают любые изменения, stable-local, в которой лежит весь код, но в которой коммиты выглядят как "сделал новую фичу", в отличии от "убрал переменную, переписал функцию, поправил стиль кода тут" в develop, и stable-public, где все тоже самое, но часть коммитов из stable-local туда не попадают.
Как это сделать проще/лучше?
  • Вопрос задан
  • 294 просмотра
Пригласить эксперта
Ответы на вопрос 1
savant
@savant
TLDR: rebase + squash + cherry-pick

Если чуть более развёрнуто: в devel коммитишь сколько влезет, когда сливаешь в stable-local делаешь rebase devel относительно stable-local + squash(суть объединяешь кучу мелких в один) лишних коммитов и мержишь, в stable-public делаешь уже cherry-pick того что должно уехать в паблик.

Либо другой вариант: держишь stable-public как основную ветку и всё вышесказанное делаешь относительно неё, а stable-local с non-public модулями регулярно ребейзишь относительно stable-public.

Третий вариант: вынести non-public в отдельный репозиторий и пользоваться submodules/subtrees
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы