ГИТ - как исправить "поврежденный" интерактивные перебазирования?
мне удалось создать небольшой беспорядок в моем локальном репозитории git. Я пытался исправить сломанную фиксацию с помощью следующим инструкциям. Перед запуском " git commit -- amend "(и после git rebase --interactive) я решил, что мои изменения были неправильными, и поэтому я выполнил"git reset HEAD --hard". Не очень хорошая идея, скажу я вам.
Теперь интерактивная ребаза, кажется,"застряла". Git показывает текущую ветвь как (/REBASE-m). Каждая команда (cd .., ls, git перебазировать...) внутри моего репозитория выдает следующую ошибку:
cat: .git/rebase-merge/head-name: нет такого файла или каталога
вот как выглядит git rebase -- abort:
$ git rebase --abort
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/head-name: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/orig-head: No such file or directory
HEAD is now at 4c737fb Revert "Modified file names"
rm: cannot remove `c:/_work/project/src/git/.git/rebase-merge/done': Permission denied
rm: cannot remove directory `c:/_work/project/src/git/.git/rebase-merge': Directory
not empty
cat: .git/rebase-merge/head-name: No such file or directory
вот результат git rebase -- continue:
$ git rebase --continue
cat: c:/_work/project/src/git/.git/rebase-merge/prev_head: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/end: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/msgnum: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/onto: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
prev_head must be defined
cat: .git/rebase-merge/head-name: No such file or directory
какие идеи? Я хотел бы вернуть ситуацию в то состояние, в котором она была до того, как я начал свою хорошо продуманную операцию перебазирования.
вот как git log --oneline показывает ситуация:
4c737fb Revert "Modified file names"
247ac02 Modified file names
33141e6 Message modifications
10a4a04 Modified db script
и это прекрасно.
Я использую msysgit v1.7.0.2.
10 ответов:
похоже, что Git пытался удалить
.git/rebase-mergeкаталог, но не удалось удалить его полностью. Вы пробовали скопировать эту папку? Также скопируйте прочь.git/rebase-applyпапка если это присутствует.
У меня была аналогичная проблема из-за зомби vim.процесс exe. Убивая его в Диспетчере задач, а затем
git rebase --abortисправил.
была такая же проблема в Eclipse. Не удалось Rebase= > прервать из Eclipse.
выполнения git rebase --abort от Git Bash работал на меня.
в Windows, Если вы не хотите или не можете перезагрузить компьютер см. ниже.
установить Process Explorer:https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
в Проводнике процессов найдите > дескриптор файла или DLL ...
введите имя файла, упомянутое в ошибке (для моей ошибки это было "git-rebase-todo", но в вопросе выше, "сделано").
Process Explorer выделит процесс, удерживающий блокировку файл (для меня это был 'grep').
убейте процесс, и вы сможете прервать действие git стандартным способом.
в моем случае это было потому, что я открыл журнал SmartGit в соответствующем проекте Git и Total Commander в соответствующем каталоге проектов. Когда я закрыл оба, я смог перебазироваться без каких-либо проблем.
чем больше я думаю об этом, тем больше я подозреваю Total Commander, т. е. Windows, имеющую блокировку на открытом каталоге, с которым git rebase пытался что-то сделать.
дружеский совет: когда вы пытаетесь что-то исправить, всегда делайте одно изменение за раз. ;)
после того, как вы удовлетворительно завершили перебазирование X количество коммитов, последняя команда должна быть
git rebase --continue. Это завершает процесс и выходит из режима перебазирования .
У меня была та же проблема. Я использовал Process explorer, как было предложено в другом сообщении (я не могу найти этот пост), и выяснил, какой процесс имеет блокировку файла и убивает его. затем выполнить --продолжать или ... отмены в соответствии с потребностями
в моем случае после тестирования всех этих параметров и все еще имея проблемы я пытался
sudo git rebase --abortи он сделал все это
Я использую git в eclipse, и у меня была та же проблема.
В конце концов я обнаружил, что "Rebase ..."запись меню была временно преобразована в подменю.
Team - > Rebase - > Abort
Это сработало для меня.
Comments