Попробуйте это:
1) Проверьте прошлый коммит, который вы хотите изменить с помощью git checkout
.
2) Пометить этот последний коммит, используя git tag PastCommit
.
3) Используйте git checkout -b FixBranch
для создания новой ветви с именем FixBranch.
4) Добавьте новый файл и сделайте новый коммит на FixBranch.
5) Переключитесь на основную ветку, используя git checkout master
.
6) Пометьте тегом git tag BACKUP
на случай, если вы что-то напортачили - просто чтобы быть в безопасности перед ребазом:)
7) Использовать git rebase --onto FixBranch PastCommit
- это переместит материал между PastCommit и головой мастера на FixBranch.
8) Уберите, используя git tag -d PastCommit
, git tag -d BACKUP
и git branch -d FixBranch
.
9) Используйте git gc
, чтобы собрать мусор и избавиться от любых висячих коммитов.
Обратите внимание, что вы можете (и должны!) Визуализировать все это в gitk
, чтобы вы могли видеть, что вы делаете (и быть уверенным, что я ничего не пропустил - это немного выше моей головы) ).
Приложение: Я только что попробовал это на тестовом репозитории, и он отлично работает.