Объединение нескольких сайтов в один Git Repo

Вот моя проблема. Компания, с которой я работаю, началась с одного веб-сайта, основанного на osCommerce (задолго до того, как я пришел). Сайт рос, они начали вторую, скопировав первую и, при необходимости, изменив ее. На протяжении многих лет это продолжалось, и теперь мы имеем пять отдельных сайтов, все они основаны на одном и том же коде. Когда мы вносим изменения на один сайт, мне приходится вручную копировать эти изменения ко всему другому коду сайтов и загружать все измененные коды на каждый из сайтов.

Это очень неэффективно и сводит меня с ума. Я знаю, что Git в значительной степени предназначен для решения таких проблем. В настоящее время у меня есть каждый сайт, как собственный Git-репо, но я все равно вынужден копировать изменения от одного к другому. Я тоже довольно новичок в Git. Я получаю фиксации, ветки, тяги и т. Д., Но в остальном я довольно зеленый.

Есть ли в любом случае, что я могу объединить все эти сайты в один репо и как мне это сделать? Я также должен указать, что файлы на каждом сайте не обязательно идентичны. Один из сайтов считается приоритетным, поэтому некоторые изменения были внесены в чрезвычайные ситуации, которые не были развернуты на других сайтах, а другая – несколько иначе, чем другие 4, поэтому в некоторых местах код немного отличается. , Я понимаю, что это вызовет конфликты, но я хотел бы найти все конфликты, разрешить их, чтобы система работала по назначению и имела какие-либо изменения в зависимости от базы данных / параметров. Босс хочет развернуть по крайней мере еще 2 сайта через пару месяцев, поэтому в этот момент я действительно потеряю рассудок.

Я хочу, чтобы это было возможно? Будет ли это требовать, чтобы я просматривал каждый файл для разрешения конфликтов? Любая помощь высоко ценится!

Если вы хотите объединить их вместе, вам придется отказаться от истории изменений для некоторых версий.

  1. Выберите одну версию в качестве отправной точки.
  2. Создайте клон этого репозитория версий для каждой версии вашего сайта, включая оригинал.
  3. Удалите содержимое каждого клона, но не сохраняйте папку .git.
  4. Скопируйте содержимое каждой версии (исключая .git) в соответствующую копию.
  5. совершить

Это оставит вас с веткой для каждой версии сайта, а также главной веткой для общих изменений. У каждой ветви теперь будет общий предок.

При слиянии вы должны быть осторожны, чтобы избежать слияния одной версии с изменениями от другой. Чтобы сделать это проще, все изменения, которые будут передаваться между сайтами, должны быть сделаны в главной ветви, а затем объединены в различные версии. Вам все равно нужно быть осторожным при слиянии, и, вероятно, вам понадобится использовать функцию набора вишни git для перемещения отдельных наборов изменений. Вам, безусловно, потребуется выбрать вишневый выбор при внесении изменений с любого из не-основных ветвей.

Вы можете упростить задачу, прежде чем начать, вы реорганизуете свою начальную ветвь, чтобы иметь меньше кода для конкретного сайта.