Изменить фиксацию, которая не была предыдущей фиксацией
Часто у меня будет рабочий процесс, как показано ниже:
- Внести изменения в группу файлов
- Внести изменения в другую группу файлов
- Поймите, я пропустил некоторые изменения, которые относятся к первой фиксации
- Проклятие
Я не могу использовать 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