Подтвердить что ты не робот

Git как отменить rebase

В Git, как вы откатываете rebase, если вы недовольны этим?

Git не имеет сухого пробега для переустановки. Если я сделал rebase и еще не нажал его, как мне откат назад, как будто этого не произошло?

4b9b3361

Ответ 1

Вы можете использовать reflog, чтобы найти первое действие перед началом перезагрузки, а затем reset - вернуться к нему. например.

$ git reflog

b710729 [email protected]{0}: rebase: some commit
5ad7c1c [email protected]{1}: rebase: another commit
deafcbf [email protected]{2}: checkout: moving from master to my-branch
...

$ git reset [email protected]{2} --hard

Теперь вы должны вернуться к началу перезагрузки.

Чтобы найти нужное место для reset to, вы просто выбираете ближайшую вершину, чтобы не начинал с "rebase".

Альтернативный подход

Если rebase является единственной вещью, которую вы сделали в ветке, то есть у вас нет распущенных коммитов/изменений - тогда вы можете просто удалить локальную ветвь с помощью git branch -D, а затем проверить ее еще раз:

$ git checkout my-branch
$ git rebase master
// not happy with result
$ git checkout master
$ git branch -D my-branch
$ git checkout my-branch

Или для того же эффекта, вы могли бы reset -hard в ветке происхождения:

$ git reset --hard origin/my-branch

Если вы делали это, пока у вас были другие нечеткие коммиты, вы потеряли бы их. В этом случае просто используйте подход reflog выше, чтобы вернуться к записи reflog, где вы сделали фиксацию.