У меня есть проект, который я управляю из репозитория git. Мы используем стратегию ветвления progit (как описано в принятом ответе, здесь: Git branch strategy for small dev team), где один филиал является производственной ветвью, а другой филиал - ветвью разработки/тестирования. Мы разворачиваем код, используя ткань.Где хранить различия между dev и производственной отраслью в git?
Когда мы готовы сделать новый выпуск продукции с помощью git, мы объединяем ветвь разработки/тестирования в производственную ветвь, а затем развертываем производственную ветку с использованием ткани. Проблема в том, что между разработкой и производством существуют разности кода - некоторые изменения логотипов, некоторые разные узлы/учетные данные DB, что-то вроде этого. Я сохраняю файл .patch, содержащий различия, и использую шаблон для применения патча при развертывании производственной среды, но это не так хорошо работает. В частности, он полностью терпит неудачу, если какой-то код вокруг патча изменился - патч не применяется, и мое развертывание прерывается.
Мне было интересно, не следует ли мне просто применить все свои изменения к производственной ветви напрямую? Каковы недостатки этого?
Один конкретный случай использования, о котором я беспокоюсь, - это если нам нужно сделать исправление. В настоящее время мы делаем это, исходя из производственной среды, внося изменения, а затем объединяем эту ветвь как в разработку, так и в производство. Если производственная ветвь отличается от разработки, могут ли эти изменения втянуться в ветку разработки, когда исправление будет объединено в разработку?
ok, так что это не сработает: когда я перехожу к разработке 'git merge development 'от производства всякий раз, когда я делаю выпуск, различия в ветви разработки заменяют производственные изменения в производственной ветви. мне нужно сохранить изменения, которые не покидают производственную ветвь - они не попадают ни в какую другую ветвь и не перезаписываются какой-либо другой веткой. –
@IgorSerebryany: Если вы вносите изменения в разработку в те же строки, которые вы пытаетесь сохранить в Production, то да, у вас будут проблемы. Каждый раз, когда вы делаете такое изменение, вы должны выполнить слияние «манекенов», чтобы в основном «испечь в камне», как должна выглядеть производственная ветвь по отношению к этим линиям. –
Я сделал следующий деликатный балет: (1) убедился, что две ветви синхронизированы; (2) я применил свои изменения к производственной ветви (3) 'git merge -s ours production' из ветки развития; (4) «git merge -s ours development» из производственной отрасли. в результате я думаю, что добрался до состояния, которое хотел, где мои изменения не сбиваются с толку и не переносятся с производства. –