Изменить фиксацию, которая не была предыдущей фиксацией

Часто у меня будет рабочий процесс, как показано ниже:

  • Внести изменения в группу файлов
  • Внести изменения в другую группу файлов
  • Поймите, я пропустил некоторые изменения, которые относятся к первой фиксации
  • Проклятие

Я не могу использовать git commit --amend, потому что это не последняя фиксация, которую мне нужно изменить. Какой лучший способ добавить изменения к первому commit , не касаясь второго?

Ответ 1

Вы можете использовать git rebase, чтобы решить эту проблему. Запустите git rebase -i sha1~1, где sha1 - хеш фиксации того, который вы хотите изменить. Найдите фиксацию, которую хотите изменить, и замените "pick" на "edit", как описано в комментариях редактора переадресации. Когда вы продолжите оттуда, вы можете отредактировать это сообщение.

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

Ответ 2

Если вы не нажали вверх по течению, вы можете:

git format-patch -1
git reset --hard HEAD~1
//change
git commit --amend
git am patchname