Эта ситуация обрабатывается интерактивным перебазированием .Применяется стандартное предупреждение о том, что история перезаписи не была передана.Есть достойное объяснение в Git Book , но я лично нахожу интерфейс rebase -i
точно перевернутым.
Начните перебазирование, назвав parent самого раннего коммита, который вам нужно изменить:
$ git rebase -i 94126f7^
Появится редактор, в котором перечислены коммиты в форвардах в хронологическом порядке (так что вам нужно перевернуть голову вверх дном).Каждый коммит от HEAD до потомка названного коммита указан в списке, поэтому вы назвали его родителя:
pick 94126f7 Added abbreviations chapter
pick 74069a1 Changed some headings in the introduction
pick 652b4c2 Added longtable package for abbreviations
pick 326f35d Small editing in ASR chapter
Что вы хотите сделать, это squash зафиксируйте 652b4c2 на 94126f7, так что вы измените его команду на «squash» и переместите ее сразу после последней:
pick 94126f7 Added abbreviations chapter
squash 652b4c2 Added longtable package for abbreviations
pick 74069a1 Changed some headings in the introduction
pick 326f35d Small editing in ASR chapter
Сохранить и выйти;следующий всплывающий редактор будет для комбинированного сообщения коммита.Вы можете изменить это по своему усмотрению, тогда, когда вы выйдете, он завершит перебазирование.
Конфликты во время перебазировки могут раздражать (некоторые исправления просто не коммутируют), а слияния могут быть особенно уродливыми, но выигралНикаких проблем с изменением порядка добавления файлов.