Подтвердить что ты не робот

Что мне делать/нужно делать с этой ошибкой git gc? (rm: не может отсоединить пакет Permission denied)

При запуске git gc, я вижу эту ошибку:

rm: cannot unlink 'pack-30b1ff2[reset of hash].pack': Permission denied

Что мне делать с этой ошибкой?

Обновление

Извините, я должен был предоставить дополнительную информацию. Да, я попробовал перезагрузку. На самом деле, перезагрузки исправили проблемы с gc для меня раньше.

Я только заметил эту проблему, потому что, когда я открываю git Gui, она предлагает мне сейчас и затем сжимать базу данных. В конце концов я заметил, что через пару раз открыв git Gui, он все время подсказывал мне, хотя я нажал "Да", и он вернулся "успешно".

Итак, я попробовал запустить его с помощью команды git EXT Settings - git maintenance - Compress git. Эта команда сказала мне, что произошла ошибка (красный свет в git EXT, тогда как в git Gui) был зеленый свет.

Ошибка, которую я опубликовал выше, однако, была выполнена из git gc прямо из git bash.

Должен ли я планировать сканирование диска? Могут ли быть вредны сектора? Я надеялся, что это будет быстрый ответ: (

4b9b3361

Ответ 1

"Разрешить отказ" в Windows часто вызывается блокировкой из выполняющегося процесса. Вероятно, что застопоренный поток Git EXT открыл файл пакета.

Попробуйте выполнить git gc в безопасном режиме.

Другим вариантом является клонирование репозитория в новом месте и удаление старого.

Ответ 2

В моем случае это был TortoiseGit. Чтобы решить эту проблему, я открыл TortoiseGit Settings- > Icon Overlays и установил кэш состояния "None". Теперь завершился процесс TGitCache, так что все объекты "бесплатно" обрабатываются с помощью git gc.

enter image description here

Ответ 3

Вам нужно закрыть консоль, где происходит команда, которая заблокировала команду. Это может быть VI, который блокирует файл или любую команду, которая была убита. Самое простое решение - закрыть все и снова открыть. Вы можете выполнить команду без проблем.

Ответ 4

В Git 2.23 (Q3 2019) следует избегать проблемы отказа в разрешении во время gc из-за графа фиксации (представленного в Git 2.18), который предварительно вычисляет и хранит информацию, необходимую для обхода предков, в отдельном файле для оптимизации обхода графа.

В Git 2.23 файл commit-graph является частью "файлов, в которых среда выполнения может хранить дескрипторы открытых файлов, все из которых должны быть закрыты при завершении работы с хранилищем объектов", а дескриптор файла - к существующему коммиту. Графовый файл теперь закрыт до того, как "gc" завершит создание нового экземпляра для его замены.

См совершать 2d511cf, совершать 5472c32, совершать c3a3a96 (17 мая 2019) от Derrick Stolee (derrickstolee).
(Объединено Junio C Hamano - gitster - в коммите 5cb7c73, 09 июля 2019 г.)

packfile: закрыть коммит-граф в close_all_packs

Метод close_all_packs() используется для закрытия всех дескрипторов чтения для pack файлов и multi-pack-index перед запуском git gc --auto.
Это особенно важно на платформе Windows, где дескрипторы чтения блокируют любые записи в эти файлы.
Замена одного из этих файлов с помощью rename() не удастся в этой ситуации.

Коммит-граф также выполняет переименование, поэтому является приемлемым для этой проблемы.
Мы тщательно закрываем коммит-граф перед записью, но это не работает, когда процесс ' git fetch ' (или аналогичный) запускает ' git gc --auto ', который может написать коммит-граф.

Здесь закройте коммит-граф как часть close_all_packs().