Забыл "git rebase --continue" и сделал "git commit". Как исправить? - PullRequest
96 голосов
/ 23 июня 2011

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

git add

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

git rebase --continue

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

git commit

за изменения. Сейчас я на "no branch" и не могу:

git rebase --continue 

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

Ответы [ 3 ]

174 голосов
/ 28 августа 2012

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

8 голосов
/ 23 июня 2011

edit: посмотрите также на ответ ниже, чтобы увидеть, является ли это более простым решением для вас. https://stackoverflow.com/a/12163247/493106

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

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

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

0 голосов
/ 02 мая 2019

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

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

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

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

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

git reset --hard 859ed3c

Тогда вы можете начать новый git rebase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...