Как отредактировать сообщение фиксации любой фиксации в git?

Скажем, у меня есть 3 неубранных коммита. Теперь я хочу изменить сообщение фиксации первого или второго фиксации (изменение их для третьего простого с помощью git commit --amend). Как это сделать?

Ответ 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)