MiiZZo
@MiiZZo
JavaScript, React, NodeJS, Student

Как на мастер залить контент другой ветки, избежав всех конфликтов?

Есть две ветки: master и feature. feature значительно впереди master по коммитам и при обычном слиянии возникает огромное количество конфликтов, самостоятельно исправлять которые нет никакого желания, каким образом можно форсировано запушить изменения ветки feature в ветку master таким образом, чтобы контент master не состовлял интереса?
  • Вопрос задан
  • 615 просмотров
Решения вопроса 3
sergey-kuznetsov
@sergey-kuznetsov
Автоматизатор
Форсированно похерить всю работу сделанную в мастере и заменить её веткой feature?
Удали мастер (это же всего лишь ссылка) и переименуй feature в master.
git checkout feature # удостовериться что мы в нужной ветке
git branch -d master # удалить ненужную ветку
git branch -M master # переименовать текущую ветку в master
Ответ написан
@AlexxChem
А почему бы не грохнуть мастер и не форкнуть его заново от фичи, если содержимое мастера неважно? Или историю терять не хочется?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Xitsa
Это, конечно, странная ситуация, но такое бывает, поэтому лучше всего сымитировать слияние, где содержимое одной ветки будет полностью заменено другой:
git checkout master
git commit-tree -p master -p feature -m "Overriding master with feature" feature^{tree}
12346aa23590aa
git merge --ff 12346aa23590aa


Команда git commit-tree создаст коммит-слияние мастера и фичи, где содержимое мастера будет полностью заменено фичей, и выведет идентификатор этого коммита.
Последняя команда интегрирует этот коммит в мастер.

Преимущества:
  • Выглядит как обычный коммит-слияние
  • Корректно сохраняет историю веток
  • Не надо проходить по разработчикам для выполнения каких-либо команд
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы