Исправьте сообщение последнего коммита и добавьте забытый файл через git commit --amend
Вы только что сделали коммит, но в сообщении опечатка, и вы забыли добавить один файл. Коммит всё ещё локальный — вы его не отправляли. Соберите обе правки в один аккуратный коммит, не создавая второй «fixup»-коммит сверху.
Ограничения: коммит ещё не отправлен; забытый файл — config.yml; на выходе один исправленный коммит, а не два.
git add config.yml
git ???
Допишите команду и скажите, когда amend небезопасен.
Добавьте забытый файл в индекс, затем git commit --amend -m 'фикс'. Amend заменяет последний коммит, вобрав config.yml и новое сообщение, — второй коммит не создаётся. Но amend переписывает коммит новым хешем: после отправки в общую историю он потребует push --force, ломающий других — правьте лишь неопубликованные коммиты.
- ✗Править amend-ом коммит, который уже отправлен и стал общим
- ✗Думать, что amend добавляет новый коммит, а не заменяет последний
- ✗Считать, что amend меняет только сообщение, но не застейдженные файлы
- →Почему amend уже отправленного коммита вынуждает делать
push --force? - →Чем полезен
git commit --amend --no-edit, когда вы лишь добавляете файл?
Решение
git commit --amend не добавляет новый коммит, а заменяет последний: он берёт то, что сейчас в индексе, плюс новое сообщение и пересобирает коммит с новым хешем.
git add config.yml
git commit --amend -m "Fix typo in config loader"
выходе один аккуратный коммит, а не два.
стал общим, amend потребует push --force и сломает копии коллег — правьте так только неопубликованные коммиты.
- Забытый
config.ymlпопадает в тот же коммит, а сообщение исправляется — на --no-editоставит сообщение прежним, если правится только содержимое.- Опасность: amend переписывает коммит (новый хеш). Если коммит уже отправлен и