ГИТ - как исправить "поврежденный" интерактивные перебазирования?



мне удалось создать небольшой беспорядок в моем локальном репозитории 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.

684   10  

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 стандартным способом.

создать файл с таким именем:

touch .git/rebase-merge/head-name

и чем использовать git rebase

в моем случае это было потому, что я открыл журнал 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

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