Ответ 1
Похоже, что Git попытался удалить каталог .git/rebase-merge
, но не смог полностью удалить его. Вы пробовали копировать эту папку? Также скопируйте папку .git/rebase-apply
, если она есть.
Мне удалось создать небольшой беспорядок в локальном репозитории git. Я пытался исправить сломанную фиксацию с помощью следующих инструкций. Перед запуском "git commit -amend" (и после git rebase -interactive) я решил, что мои изменения были неправильными, поэтому я выполнил "git reset HEAD -hard". Не очень хорошая идея, говорю вам.
Теперь интерактивная перестановка кажется "застрявшей". git показывает текущую ветвь как (| REBASE-m). Каждая команда (cd.., ls, git rebase...) внутри моего репозитория дает следующую ошибку:
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 --online показывает ситуацию:
4c737fb Revert "Modified file names"
247ac02 Modified file names
33141e6 Message modifications
10a4a04 Modified db script
И это прекрасно.
Я использую msysgit v1.7.0.2.
Похоже, что Git попытался удалить каталог .git/rebase-merge
, но не смог полностью удалить его. Вы пробовали копировать эту папку? Также скопируйте папку .git/rebase-apply
, если она есть.
У меня была аналогичная проблема из-за процесса zombie vim.exe.
Убив его в диспетчере задач, а затем git rebase --abort
исправил его.
Я застрял в этом. Я создал файл head-name, а затем столкнулся с другой ошибкой, в которой говорилось, что он не может найти нужный файл, поэтому я создал этот файл. Затем я получил еще одну ошибку, говорящую о том, что не могу прочитать ".git/rebase-apply/into": такого файла или каталога нет.
Поэтому я посмотрел документацию по git для перебазирования и нашел другую команду под названием git rebase --quit
. Это вернуло меня к моей ветке без изменений, и я мог начать заново, как новый.
Была та же проблема в Eclipse. Не удалось Rebase = > прервать из Eclipse.
Выполнение git rebase --abort из Git Bash Работало для меня.
В Windows, если вы не хотите или не можете перезапустить машину, см. ниже.
Установить Process Explorer: https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
В Process Explorer, Find > File Handle или DLL...
Введите имя файла, указанное в ошибке (для моей ошибки это было "git -rebase-todo", но в вопросе выше "done" ).
Process Explorer выделит процесс, содержащий блокировку файла (для меня это был "grep" ).
Убейте процесс, и вы сможете прервать действие git стандартным способом.
Создайте файл с таким именем:
touch .git/rebase-merge/head-name
и чем использовать git rebase
В моем случае бросали git rebase --abort
и git rebase --continue
:
ошибка: не удалось прочитать ".git/rebase-apply/head-name": нет такого файла или каталога
Мне удалось решить эту проблему, вручную удалив каталог .git\rebase-apply
.
После того как вы удовлетворительно завершили перезарядку X числа коммитов, последняя команда должна быть git rebase --continue
. Это завершает процесс и выходит из режима переустановки.
В моем случае это было потому, что я открыл SmartGit Log в соответствующем проекте Git и Total Commander в соответствующем каталоге проекта. Когда я закрыл оба, я смог без проблем переустановить.
Чем больше я думаю об этом, тем больше я подозреваю, что Total Commander, то есть Windows, имеющий блокировку в открывшемся каталоге, была перезагружена перезагрузка Git.
Дружеский совет: когда вы пытаетесь что-то исправить, всегда делайте одно изменение за раз.;)
У меня была та же проблема. Я использовал обработчик процессов, как это было предложено в другом посте (я не могу найти этот пост), и выяснил, какой процесс имеет блокировку в файле и убивает его. затем выполните команду -continue или -abort в соответствии с потребностями
В моем случае после тестирования всех этих параметров и все еще возникли проблемы, я пробовал sudo git rebase --abort
, и он сделал все это
Я использую git version 2.19.2.windows.1
.
единственное, что сработало для меня, это удалить каталог .git/rebase-apply/
и выполнить git reset --hard
.
Я пробовал все вышеупомянутые шаги, но ничего не помогало мне. Наконец, перезагрузка компьютера сработала для этой проблемы: D
С SublimeText 3 в Windows проблема решается простым закрытием окон Sublime, используемых для интерактивного редактирования.
попробовал все остальное, кроме перезагрузки, у меня сработало rm -fr.git/REBASE_HEAD
Спасибо @Laura Slocum за ваш ответ
Я все испортил во время перебазирования и получил отдельную ГОЛОВКУ с
error: could not read orig-head
это помешало мне закончить перебазирование.
Кажется, что отсоединенная ГОЛОВА точно содержит мое правильное состояние ребазировки, поэтому я побежал
rebase --quit
и после этого я проверил новую временную ветку, чтобы связать ее с отделенной головой.
Сравнивая его с веткой, которую я хотел перебазировать, я вижу, что новая временная ветка находится именно в том состоянии, в котором я хотел достичь. Спасибо
Я использую git в eclipse, и у меня была та же проблема.
В конце концов я обнаружил, что элемент меню "Rebase..." был временно преобразован в подменю.
Team- > Rebase → Abort
Это сработало для меня.