Ответ 1
Откажитесь от подзапроса: существует ли git commit --amend
для предыдущего коммита (а не только для последнего), вы можете попробовать что-то вроде (еще не проверено, но Колин О'Делл упоминает в комментариях, написав script для него colinodell/git -amend старый):
git checkout -b tmp
git reset --hard HEAD~2
git commit -amend
git rebase --onto tmp [email protected]{1} master
Это будет выглядеть так:
x---x---x---x---x
^
|
(master*) (* = current branch)
git checkout -b tmp
x---x---x---x---x
^
|
(tmp*, master)
git reset --hard HEAD~2
x---x---x---x---x
^ ^
| |
(tmp*) (master)
git commit -amend
y (tmp*)
/
x---x---x---x---x
| ^
([email protected]{1}) |
(master)
git rebase --onto tmp [email protected]{1} master
(tmp)
y---x'---x' (master*)
/
x---x---x---x---x (only referenced in reflog)