Забыл "git rebase -continue" и сделал "git commit". Как исправить?

Я перебирал код в git, у меня возникли конфликты слияния. Я решил конфликты и сделал:

git add

На данный момент я забыл сделать:

git rebase --continue

Я продолжил кодировать и сделал:

git commit

для изменений. Сейчас я нахожусь на "no branch" и не могу сделать:

git rebase --continue 

Как это исправить?

Ответ 1

Изменение: Посмотрите на ответ ниже, чтобы увидеть, является ли это более простым решением для вас. fooobar.com/questions/89871/...

Я должен был бы попробовать это, но я думаю, что это то, что я хотел бы сделать:

  1. Пометьте свой последний коммит (или просто запишите его SHA1 где-нибудь, чтобы не потерять его): git tag temp
  2. git rebase --abort
  3. Сделайте ребазинг снова. Вам придется снова разрешить слияние. :(
  4. git rebase --continue
  5. git cherry-pick temp

Проблема в том, что ваш temp коммит, вероятно, содержит как разрешение слияния, так и новый код. Так что это может быть сложно, но я бы попробовал и посмотрел, работает ли это.

Ответ 2

Просто сделайте git reset --soft HEAD^. Он перемещает указатель HEAD на родителя, но сохраняет дерево работы и добавляет слияние в индекс. Таким образом, вы можете продолжить перезагрузку с помощью git rebase --continue, как и раньше.

Ответ 3

У меня возникла та же проблема, и, что еще хуже, я перебирал три коммита, и после разрешения конфликтов на втором коммите я "зафиксировал" вместо "rebase --continue".

В результате у меня был этот мерзавец reflog

Когда я применил решение kirikaza, я просто отменил третий коммит, а не второй, что было проблематично..

Как вы можете видеть, rebase начинается с извлечения из ветки remotes/origin/master и затем применяет мои три коммита, которые отображаются как три предыдущие операции (перед извлечением) в reflog.

Затем, если вы хотите перезапустить с чистой базы, перед ребазингом вы можете просто сбросить жесткий хеш непосредственно перед проверкой операции ребазирования. В моем случае (см. Рисунок):

git reset --hard 859ed3c

Затем вы можете начать новый git rebase.