Застрял в git rebase ... как сбросить - PullRequest
7 голосов
/ 07 марта 2019

Я часть пути через git rebase, и я застрял. Я не могу точно вспомнить, что произошло, но я использовал пользовательский интерфейс и удалил извлеченную ветку, и все казалось просто пустым. Я перезапустил и сумел сделать немного другой работы, создавая и фиксируя в других ветках и т. Д., Но затем я заметил состояние, говорящее, что я все еще находился в середине перебазирования

Если я попытаюсь

git rebase --skip
git rebase --continue
git rebase --abort

каждый сбой с

error: could not read '.git/rebase-merge/head-name': No such file or directory

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

Edit:

$ git status
On branch fix/SJW-01225
Your branch is up to date with 'core-v3/fix/SJW-01225'.

You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")

Untracked files:
(use "git add <file>..." to include in what will be committed)

     [long list of untracked files]

nothing added to commit but untracked files present (use "git add" to track)

Edit-1:

$ touch .git/rebase-merge/head-name

$ git rebase --abort
error: could not read '.git/rebase-merge/onto': No such file or directory

$ touch .git/rebase-merge/onto

$ git rebase --abort
error: could not get 'onto': ''

Thx

1 Ответ

8 голосов
/ 07 марта 2019

Чтобы выйти из поврежденного git rebase, вы можете сделать следующее:

  1. Сброс до известного состояния.Вы можете узнать, с какого коммита вы начали rebase с git reflog.

Например, reflog даст вам следующее.Начальная точка перебазирования является последней rebase (start) или rebase -i (start), если вы выполнили интерактивную перебазировку.Вот оно HEAD@{1}:

$ git reflog
f10ccfed (HEAD) HEAD@{0}: rebase : fast-forward
383aa038 (origin/master, origin/HEAD) HEAD@{1}: rebase (start): checkout HEAD~10
0600cf7e (origin/Files, master, Files) HEAD@{4}: checkout: moving from master to Files
0600cf7e (origin/Files, master, Files) HEAD@{5}: commit: fixes
f10ccfed (HEAD) HEAD@{6}: commit: refactoring

Итак, что вам нужно:

    git checkout master # assuming you were on master
    git reset --hard HEAD@{1}
Удалить папку rebase-merge
    rm -rf .git/rebase-merge
...