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



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



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.. Я просто жду перебазирования. Что я могу сделать?



обновление:
Это выход: 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 добавить . нечего.

938   6  

6 ответов:

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

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

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

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

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

$ 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
  • Шаг 1: продолжайте git rebase --continue

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

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

  • если вы просто хотите, чтобы бросить перебазировать работать git rebase --abort

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

я настроить мой 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 рано.

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

еще один вариант, чтобы сделать это от IDE

VCS > Git > прервать перебазирование

enter image description here

Comments

    Ничего не найдено.