Если бы вы еще не нажали , поэтому ваш коммит пока только локальный, простой процесс будет
# restore these 3 files to their previous state
git checkout HEAD^ -- path/to/file1 path/to/file2 path/to/file3
# include these changes...
git add path/to/file1 path/to/file2 path/to/file3
# ... in last commit
git commit --amend
Однако, если вы уже уже нажали , есть 2 основных сценария:
1) Либо вы работаете в этом репо в одиночку, либо делитесь репо, но работаете в одиночку в этой ветке (часто это касается функциональных веток, но зависит от вашего рабочего процесса)
Вышеописанный процесс в порядке, просто имейте в виду, что в следующий раз, когда вы захотите передать на удаленный компьютер, вам придется использовать флаг -f
в вашей команде push для принудительного обновления старого ref.
2) или это общая ветка, ее история не может быть изменена без каких-либо проблем
Тогда вышеописанного процесса переписывания истории следует избегать. Вместо этого вам просто нужно пропустить параметр --amend
в конце, и он сделает новый коммит, который содержит только эту последнюю модификацию ваших файлов. Менее элегантно, чем совершать его правильно, но вы не изменили историю, и ваши файлы в порядке.