Вопрос:

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

git

28310 просмотра

3 ответа

687 Репутация автора

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

git add

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

git rebase --continue

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

git commit

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

git rebase --continue 

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

Автор: Abhilash Источник Размещён: 23.06.2011 03:56

Ответы (3)


9 плюса

16373 Репутация автора

Решение

изменить: посмотрите также ответ ниже, чтобы увидеть, если это простое решение для вас. 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коммит, вероятно, содержит как разрешение слияния, так и новый код. Так что это может быть сложно, но я бы попробовал и посмотрел, работает ли это.

Автор: MatrixFrog Размещён: 23.06.2011 05:23

174 плюса

1889 Репутация автора

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

Автор: kirikaza Размещён: 28.08.2012 04:05

0 плюса

163 Репутация автора

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

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

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

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

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

git reset --hard 859ed3c

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

Автор: Louis Durand Размещён: 02.05.2019 01:50
Вопросы из категории :
32x32