@mrSeller

Как применить изменения к НЕ последнему коммиту?

Есть ветка и три коммита в ней AAA-BBB-CCC
Все коммиты отправлены на PR

Далее были сделаны правки, но их надо применить к коммиту BBB
Если б нужно было слить их с CCC, я бы воспользовался --amend, а как быть в моей ситуации?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Есть ветка и три коммита в ней AAA-BBB-CCC...
Далее были сделаны правки, но их надо применить к коммиту BBB

git commit -a -m fixes
git rebase -i AAA

перенести fixes после BBB, заменить pick перед fixes на fix.

Всё то же самое, но автоматически:
git commit -a --fixup BBB
git rebase --autosquash AAA
Ответ написан
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Сначала спрячем незакоммиченные правки. Нам нужен чистый рабочий каталог.
git stash
Запустим процесс переписывания истории
git rebase -i AAA
В текстовом редакторе заменяем перед коммитом BBB слово pick на edit
Сохраняем, выходим
Git начнёт процесс переборки ветки и остановится на коммите BBB
и покажет инструкцию
Stopped at BBB
You can amend the commit now, with

 git commit --amend 

Once you are satisfied with your changes, run

 git rebase --continue

По хорошему, в этом состоянии и надо было изначально начинать редактировать коммит.
Но мы сейчас вытащим спрятанные правки
git stash pop
# скорее всего вылезут конфликты, которые нужно разрешить и 
git add .

Затем собственно поправить коммит BBB
git commit --amend
Далее по инструкции
git rebase --continue
Если всё хорошо, увидим
Successfully rebased and updated refs/heads/master.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы