Почему мой git интерактивный ребаз изменяет последнее сообщение коммита, а затем показывает все актуально, когда я делаю push?

Я сделал толчок из моих последних изменений

git push origin master

затем я исправил сообщение коммита с помощью интерактивной перебазировки, т.е.

git rebase -i HEAD~5

и изменил сообщение в последнем коммите.

Это успешно сохранено, но когда я сделал git push origin master это просто говорит Everything up-to-date,

Теперь история Git не показывает изменение формулировки, как на самом деле были сделаны?

Однако, когда я делаю git commit --amend -m"msg" а затем попробуйте нажать "видно".

3 ответа

Во время интерактивной перебазировки я изменил сообщение о коммите... но я не изменил первый столбец ("действие") с pick в reword (или просто r коротко).

В результате изменения были применены правильно.

затем показать все в актуальном состоянии, когда я делаю толчок?

Возможное объяснение, проиллюстрированное Git 2.18 (Q2 2018): во время " rebase -i msgstr "сеанс, код может дать более старую отметку времени для коммитов, созданных более поздним" выбором ", чем более ранним reword ", который был исправлен.

См. Коммит 12f7bab (18 апреля 2018 г.) от Johannes Sixt ( j6t )
(Объединено Юнио С Хамано - gitster - в коммите 0657e0f, 08 мая 2018 г.)

sequencer: сбросить дату коммиттера до коммитов

Теперь, когда секвенсор фиксирует без разветвления, когда сообщение о фиксации не редактируется, все выбранные коммиты имеют одинаковую дату.
Если коммит перефразирован, его дата коммиттера будет позже, так как он создается путем запуска отдельного экземпляра 'git commit'.

Если за переписанным коммитом следуют дальнейшие выборы, у этих более поздних коммитов будет более ранняя дата коммиттера, чем у переписанного. Это вызвано тем, что git кэширует дату по умолчанию, используемую при GIT_COMMITTER_DATE не установлен.
Сбросьте кэшированную дату до того, как в процессе будет сгенерирован коммит.

Потому что коммит последнего коммита не меняется. Вы должны изменить хэш коммита последнего коммита, чтобы сервер знал, что вы внесли изменения.

Вы можете использовать команду reword или edit при интерактивной перебазировке. Или просто используйте commit --amend.

Другие вопросы по тегам