Некоторое время назад я использую git ежедневно, и на этот раз я столкнулся с проблемой, которую могу описать следующим образом.
У меня есть репозиторий, который содержит всю структуру сайта,и корень сети находится в корне хранилища.Все было хорошо, пока это не было хранилище для одного сайта.Однако это же репо теперь используется для нескольких сайтов - в основном, для одного и того же сайта, на разных языках, незначительных изменений в шаблонах, разной графики и т. Д. Все это естественным образом.
Существует основная ветка, которая содержитисходный исходный код сайта, и я бы хотел, чтобы мастер (или другая ветвь) содержал код, универсальный для всех сайтов, поскольку в конечном итоге будут изменения, которые слишком специфичны для сайта, чтобы включать его в универсальную частьrepo.
Далее, есть ветка для каждого сайта, который использует этот исходный код.Все эти ветви (скажем, site1 , site2 и site3 ) создаются из главной ветви, и каждый сайт клонирует правильную ветвь.
Что ж, это казалось хорошей идеей, пока я не начал вносить изменения везде.
Если бы я внес изменение в ветку site1, и мне нужно было скопировать это изменение в ветку site2, я бы выбрал вишню из одноговетвь к другому.Слияние здесь не может быть и речи, так как есть другие изменения в ветке site1, которые не относятся к ветке site2.Есть ли какое-то другое, более изящное решение для такой ситуации или сбор вишни именно для этой цели?
Теперь настоящая «проблема» для меня - это когда я меняю мастера, а потом яхочу скопировать все эти изменения во все ветви.Естественно, учитывая тот факт, что все ветви являются потомками мастера, и что я делаю хочу эти изменения во всех ветвях сайта *, я переключаюсь на каждую ветку и объединяю мастера.
Это создаетдовольно неприятная история для всех отраслей.Каждый раунд слияний значительно усложняет график, что приводит меня к двум выводам:
- этот способ наслоение веток может работать, пока я наблюдаю за своим шагом и не делаю ничего глупого,и не пытаясь получить какой-либо смысл из графа истории всех ветвей.Или ..
- должен быть какой-то лучший, более подходящий способ сделать это.
Чтобы проиллюстрировать мою "проблему", я дам изображение графика, которое я получилпосле создания этих веток, добавления нескольких коммитов для конкретной ветки, выбора нескольких из них, добавления и слияния одного коммита от мастера ко всем ветвям, коммита или двух к определенным ветвям, а затем еще одного слияния мастера со всеми.
Я не знаю, мне нравится простота, и, возможно, я не привык видеть сложные графики, подобные этой (которая будет только усложняться с каждымбоюсь, после слияния).
Полагаю, я мог бы все время собирать вишню и иметь аккуратный график истории, но это тоже не звучит правильно, так как я мог бы сделать несколько коммитов вгрести, а потом забыть выбрать один из них для всех остальных ветвей ...
Итак ... Есть какие-нибудь идеи, опыт, предложения, которыми вы не против поделиться?
ОБНОВЛЕНИЕ: Я выбираю решение, описанное в моем комментарии к аккответ.Спасибо всем, кто внес свой вклад!
ОБНОВЛЕНИЕ 2: Несмотря на то, что это не тесно связано с этим вопросом, недавно я наткнулся на эту модель ветвления , которая кажется подходящейпрактически для любого организованного цикла разработки с GIT в качестве основного DVCS.Это действительно хорошее чтение.Рекомендуется.