Этот вопрос о слегка удивительном аспекте поведения git rebase -i
. Если вы закроете окно редактора без внесения каких-либо изменений, то перебазирование все равно будет иметь место. 1 (Это очень отличается от действия, когда всплывающий редактор сообщений фиксации, когда выход из редактора без каких-либо действий изменения отменяют фиксацию.)
В вашем случае, поскольку вы сохранили интерактивный список перебазирования в другом месте, а затем вышли из редактора, git предположил, что вы просто хотите повторно применить все эти коммиты, как и раньше - он не может сказать, что вы сохранили файл в другом месте. Если история была линейной между HEAD
и HEAD~40
, то история будет точно такой же (включая имена объектов каждого коммита), но если она была нелинейной, вы переписали бы свою историю так, чтобы она была линейной (и поэтому у некоторых коммитов будут разные имена объектов).
Вы можете захотеть проверить в reflog, что HEAD имеет одно и то же имя объекта (хеш) до и после перебазирования, чтобы проверить это.
1 Несмотря на то, что в используемой версии git может сказать, что результат будет точно таким же, он не потрудится повторно применить коммиты и просто поместит одну запись в reflog , Тем не менее, эта оптимизация явно не имела места в вашей ситуации, поскольку вы можете увидеть повторное применение каждого коммита в reflog.