7

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

Я только что закончил читать главу веток книги Pro Git, и я немного запутался, если ветка не лучшее решение для этой проблемы, разве это развилка?

Я имею в виду, что у нас есть экземпляры кода A и B, между A и B, различия в том, что такие вещи, как цвета CSS, URL-адреса, ключи API, но большая часть кода одинакова, так как я могу с этим справиться, мне нужно что-то вроде кода в A, а затем «залатать» его, чтобы получить B, но я не уверен, как сделать слияние, которое не отменяет изображения ...

В любом случае, если это ветвь или ветвь, как я могу объединить новые функции в A без потери изменений в B?

2 ответа2

2

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

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

1

Это немного сложно, и я боюсь, что нет единого "правильного" ответа. Я согласен, что поддержание отдельных веток для A и B не подходит для использования git.

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

Вторым вариантом является разветвление только различий (например, каталогов images и css). Это оставило бы вас с 3-мя git-репозиториями: код (только одна база кода для поддержки, ура!), Images /css /etc. для A, и то же самое для B. Недостаток этого подхода в том, что он усложняет развертывание, особенно если вам необходимо одновременно развернуть изменения кода и стиля.

В качестве альтернативы, вы можете использовать git для поддержки одного репозитория с A и B в качестве отдельных веток. Нет, это не идеально, но, строго говоря, это будет работать. Тем не менее, это, возможно, более сложное решение проблемы, чем первое предложение (разветвление А и В полностью).

Никто, кроме вас (и вашей команды) не может сказать вам, какой "правильный" подход в вашей ситуации. Я желаю вам удачи!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .