У меня есть местное отделение, назовем его DEV. Ветка коммитов истории выглядит так:
module_A: добавить проверку CRC (9273467932)
module_B: изменить процедуру выключения (84705723)
Запрос на слияние # 918 из XXX (265424)
module_D: очистка (3859236)
Слияние ветки fix_for_drain_issue (38572693)
(...)
Теперь, мне не нравится четвертое сообщение коммита «очистка», оно нечеткое, поэтому я бы хотел его отредактировать. Итак, я иду:
git rebase -i 3859236
vim открывается, и я отмечаю 3859236 как edit . Затем я делаю git commit --ammend
и изменяю сообщение коммита на более информативное. Все идет нормально. Так как это было единственное изменение, которое я хотел сделать, я наконец-то выпускаю git rebase --continue
И тут сюрприз:
interactive rebase in progress:
(...)
both modified: tools/src/file.c
Как это возможно? Все, что я сделал, это просто изменение сообщения коммита, верно? Так как же в мире Git поднимает конфликтующие файлы?
Моя теория состоит в том, что git пытается перебазировать все коммиты из объединенных коммитов, которые у меня есть, и это может вызвать конфликты. Особенно, если тем временем я потянул эти ветви.
Я уже все перепробовал -p, чтобы сохранить сообщения коммита; -r воссоздание коммитов слияния - безуспешно, он всегда пытался перебазировать эти ветви. Я также вижу это, когда появляется rebase edit-todo list. Это список коммитов, которых нет в моей текущей ветке, но которые находятся в тех ветках, из которых я слил или выбрал вишню.
Так что мой вопрос сводится к следующему: как я могу ограничить ребаз, чтобы только реорганизовать коммиты из этой конкретной ветки. Или, в качестве альтернативы, как редактировать, иногда коммиты сквоша в этой ветке без перебазирования.