выполняется перебазирование. Не могу совершить. Как продолжить или остановить (прервать)?
когда я запускаю:
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 добавить . нечего.
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на толчок требуется, если вы пропустите другие коммиты и обе ветви не гладкий (оба отсутствуют коммиты от другого).

Comments