Или, может быть, я использую совершенно неверный подход к проблеме?
Вы используете совершенно неверный подход к этой проблеме:)
Проблема в том, что ветви и инструменты вокруг них предназначены для поддержки разных версий одной и той же базовой вещи .
Но ваши два веб-сайта на самом деле не одно и то же, они две разные вещи с некоторой общностью, и вам приходится злоупотреблять мерзавцем, потому что вы лжете ему об их отношениях.
Ваши вменяемые параметры:
заставит ваше репо представлять вселенную всех (хорошо, оба) сайтов . Таким образом, они оба видны в одной структуре каталогов и используют разные пути. Они могут иметь отдельные ветки dev и release, но это необязательно. Если два сайта имеют некоторую общность, это может быть просто в форме общих файлов.
например.
repo/supersite
repo/secondsite
repo/common
сделать отдельное репо для каждого сайта и продублировать общие файлы. Вы можете просто скопировать изменения
создайте отдельное репо для каждого сайта и третье репо для общих вещей и используйте субмодули для объединения суперсайта + общего в одном месте и секундного + общего в другом.
например.
super-repo/site # super site content
super-repo/common # common repo as submodule
second-repo/site # second site content
second-repo/common # same common repo as submodule
Обратите внимание, что подмодули относятся к одному и тому же репо, но каждый экземпляр может в настоящее время находиться в другой ветви или коммите
В некоторой степени правильный выбор зависит от того, насколько сильно различаются два сайта, как часто меняются общие биты, и от того, можно ли заставить оба сайта использовать одну и ту же версию общих битов, и какую долю общий контент делится на уникальный и т. д. и т. д.