Удалить / удалить текущую фиксацию в интерактивной перебазировке

#git #git-rebase #git-interactive-rebase

#git #git-перебазирование #git-interactive-перебазирование

Вопрос:

Я нахожусь в интерактивной перебазировке и отметил коммиты, на которые мне нужно более внимательно посмотреть с edit помощью ( e ) теперь, просматривая коммиты, я понимаю, что некоторые коммиты необходимо удалить / удалить. Какой правильный коммит для этого в интерактивном режиме?

В настоящее время я выполняю следующие команды:

 $ git reset HEAD^
$ git checkout -- <File> # <- here I list all of the files that need to be reset
$ git rebase --continue # this complains that I have to perform git commit --allow-empty or git reset
# since I don't want the empty commit I do …
$ git reset
$ git rebase --continue
 

Это очень долго. Итак, я попытался

 $ git reset --hard HEAD^
$ git rebase --continue
 

Но это приводит к конфликту слияния.

Итак, каков самый простой способ удалить текущую фиксацию, находясь в режиме редактирования интерактивной перебазировки?

Ответ №1:

Итак, каков самый простой способ удалить текущую фиксацию, находясь в режиме редактирования интерактивной перебазировки?

Для меня самый простой способ, безусловно, — это записать коммит, который я хочу удалить (строка темы и любые другие идентификационные метки), завершить интерактивную перебазировку и начать новую интерактивную перебазировку и пометить коммит как «отбрасывание». Нет необходимости делать все это сразу!

Ответ №2:

Если git reset --hard вы также теряете изменения текущей фиксации, отсюда и конфликты, я полагаю. Вместо этого вы могли бы выполнить смешанный сброс с

 git reset HEAD^
 

И внесите изменения в последнюю фиксацию с изменениями в текущей фиксации:

 git add your_changes
git commit --amend -m "new commit message"