Как склеить два коммита, расположенных не подряд?

Предположим, есть три коммита:
коммит 1 - мелкие правки;
коммит 2 - серьезная переделка;
коммит 3 - снова мелкие правки.

Хочу слить коммиты 1 и 3 в один при помощи rebase. Не пойму, как это сделать, ведь при помощи squash можно склеить только подряд идущие коммиты, т. е. можно, например, приклеить 3 к 2, но не 3 к 1.
  • Вопрос задан
  • 784 просмотра
Решения вопроса 1
Это может быть не просто. Оцените необходимость этой операции прежде чем действовать, можно сильно навредить репозиторию / коду.

Задачу можно выполнить через интерактивный rebase. В процессе с высокой вероятностью возникнут конфликты. Я бы делал в 2 этапа. Первым делом расположил бы коммиты в нужном порядке

git rebase -i хеш_коммита_3^
В открывшемся редакторе можно выставить коммиты в нужном порядке.
После сохранения файла, вероятнее всего появится сообщение о неразрешенных конфликтах - их все необходмио разрешить, добавить в индекс и продолжить rebase через git rebase --continue

После успеха, можно повторить интерактивный rebase с целью сделать squash.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы