Git rebase вызывает ошибки «unlink of file failed» - PullRequest
0 голосов
/ 22 марта 2019

Часто, когда я делаю git pull --rebase, я получаю такой вывод:

> git pull --rebase
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
Enumerating objects: 249988, done.
Counting objects: 100% (249988/249988), done.
Delta compression using up to 12 threads.
Compressing objects: 100% (62830/62830), done.
Writing objects: 100% (249988/249988), done.
Total 249988 (delta 179539), reused 249988 (delta 179539)
Unlink of file '.git/objects/pack/pack-00a0089ffcdc3d5ea5d2cc81042b741ba6d55a7d.idx' failed. Should I try again? (y/n)

Вопрос повторяется около ста раз для каждого файла, который предположительно заблокирован.

Указанный файл может быть произвольным, но это всегда файл в каталоге .git/objects/pack/. Насколько я могу судить, нет другого программного обеспечения, которое бы блокировало эти файлы.

Кажется, эта проблема возникает в основном после переключения ветвей.

Я использую Git 2.18 в Windows 10.

Я предпочитаю не погружаться в WLS или git-bash. Несмотря на то, что это было бы обходным решением, чтобы заставить работать rebase, в конечном итоге я хочу избавиться от этой проблемы в обычной командной строке.

Другой обходной путь - сначала выполнить git gc. Эта команда каким-то образом способна освободить эти файлы и заставить последующие команды работать как положено.

Этот вопрос кажется дубликатом моего вопроса, но говорит об исправлении в Git 2.8 (к которому мы сейчас довольно далеки), и в плакате используется git-bash, что является другим сценарием в любом случае.

1 Ответ

0 голосов
/ 23 марта 2019

Это сообщение означает, что какой-то другой процесс в вашей системе использует эти файлы.Возможно, у вас есть плагин редактора или другое программное обеспечение, которое использует Git или libgit2 для доступа к этим файлам, и Windows не позволяет их удалять, когда они используются.Это ограничение Windows и API Win32, которое не применяется к системам Unix или WSL.

Вы можете закрыть или убить другой процесс, перезагрузиться или переключиться на использование WSL, что позволит удалять файлы, которыеиспользуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...