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

выполняется ребазинг. Не удается зафиксировать. Как продолжить или остановить (отменить)?

Когда я запускаю:

git status

Я вижу это:

rebase in progress; onto 9c168a5
You are currently rebasing branch 'master' on '9c168a5'.
(all conflicts fixed: run "git rebase --continue")
nothing to commit, working directory clean

Когда я это сделаю:

ls `git rev-parse --git-dir` | grep rebase || echo no rebase

Я вижу: rebase-apply

Я не могу зафиксировать происхождение.

git branch

Показывает:

* (no branch, rebasing master)
  develop
  master

Я застрял. Я не знаю, что делать? Неужели так долго нужно перебалансироваться? git rebase --continue ничего не делает. У меня ничего нет в статусе git. Я просто жду обновления. Что я могу сделать?

UDATE: Это вывод: git rebase -continue

Applying: no message
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

git добавить. ничего не имеет.

4b9b3361

Ответ 1

Rebase не происходит в фоновом режиме. "rebase in progress" означает, что вы начали rebase, и rebase прервали из-за конфликта. Вы должны возобновить rebase (git rebase --continue) или прервите его (git rebase --abort).

Как следует из сообщения об ошибке из git rebase --continue, вы попросили git применить патч, который приводит к пустующему патчу. Скорее всего, это означает, что патч уже был применен, и вы хотите отказаться от него, используя git rebase --skip.

Ответ 2

Вы сказали, что ваш репозиторий переустанавливается. Похоже, вы были на фиксации (идентифицированы SHA 9c168a5), а затем сделали git rebase master или git pull --rebase master.

Вы переустанавливаете мастер ветки на этот фиксатор. Вы можете завершить rebase через git rebase --abort. Это вернет вам состояние, в котором вы были, до того, как вы начали перезаряжаться.

Ответ 3

Недавно я попал в это состояние. После разрешения конфликтов во время перезагрузки я совершил свои изменения, а не выполнил git rebase --continue. Это дает те же сообщения, которые вы видели при запуске команд git status и git rebase --continue. Я решил проблему, запустив git rebase --abort, а затем перезапустив rebase. Вероятно, вы также можете пропустить rebase, но я не был уверен, в каком состоянии вы меня оставите.

$ git rebase --continue
Applying: <commit message>
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

$ git status
rebase in progress; onto 4df0775
You are currently rebasing branch '<local-branch-name>' on '4df0775'.
  (all conflicts fixed: run "git rebase --continue")

nothing to commit, working directory clean

Ответ 4

  • Шаг 1: Продолжайте git rebase --continue

  • Шаг 2: исправьте конфликты, затем git add.

  • Вернуться к шагу 1, теперь, если он говорит, что no changes.. затем запустите git rebase --skip затем вернитесь к шагу 1

  • Если вы просто хотите выйти из rebase, запустите git rebase --abort

  • Как только все изменения сделаны, запустите git commit -m "rebase complete" и все готово.

Ответ 5

Я настроил свой git на autorebase на git checkout

# in my ~/.gitconfig file
[branch]
    autosetupmerge = always
    autosetuprebase = always

В противном случае он автоматически объединяется при переключении между ветвями, что, по моему мнению, является наименее возможным выбором по умолчанию.

Однако это имеет побочный эффект, когда я переключаюсь на ветку, а затем git cherry-pick <commit-id> я оказываюсь в этом странном состоянии каждый раз, когда у него есть конфликт.

Мне действительно нужно прервать rebase, но сначала я исправляю конфликт, git add /path/to/file файл (другой очень странный способ разрешения конфликта в этом случае?!), затем выполните git commit -i /path/to/file. Теперь я могу прервать rebase:

git checkout <other-branch>
git cherry-pick <commit-id>
...edit-conflict(s)...
git add path/to/file
git commit -i path/to/file
git rebase --abort
git commit .
git push --force origin <other-branch>

Второй git commit ., похоже, происходит от прерывания. Я исправлю свой ответ, если узнаю, что я должен скорее прервать rebase.

--force на нажатие требуется, если вы пропустите другие коммиты, и обе ветки не являются гладкими (обе они не комментируют друг друга).

Ответ 6

Другой вариант, чтобы ABORT/SKIP/ПРОДОЛЖИТЬ из IDE

VCS> Git> Abort Rebasing

enter image description here

Ответ 7

Я застрял в "состоянии перебазирования", я получил

On branch master
Your branch is up to date with 'origin/master'.

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

nothing to commit, working tree clean

но выполнение git rebase --skip привело к error: could not read '.git/rebase-apply/head-name': No such file or directory.

Запуск rm -fr ".git/rebase-apply" помог.

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