Зазвичай це означає, що процес все ще використовує певний файл (на ньому все ще є ручка)
(у Windows ProcessExplorerдобре відстежувати такий процес)
Спробуйте закрити інші програми та повторіть спробу git pull.
Зауважте, що у вас є альтернатива зі GIT_ASK_YESNOзмінною .
Оновлення січня 2019 року:
Це повинно бути ще більш виправленим, Git 2.21 (Q1 2019), оскільки " git gc" і " git repack" не закрили відкриті файли пакунків, які вони виявили непотрібними перед їх видаленням, які не працювали на платформі, нездатній видалити відкритий файл.
Це було виправлено.
Див. Комітет 5bdece0 (15 грудня 2018 р.) Йоганнеса Шинделіна ( dscho) .
(Об'єднав Хуніо С Хамано - gitster- у комітеті 5104f8f , 18 січня 2019 р.)
gc/ repack: при необхідності випускайте пакети
У Windows файли не можуть бути видалені або перейменовані, якщо процес все ще зберігається в ручках.
Щоб виправити це, ми ввели close_all_packs()функцію.
Раніше ми переконувались, що пакети випущені безпосередньо перед git gcпородженням, на випадок, якщо вони gcхочуть видалити вже не потрібні пакети.
Але цей розробник забув, що gcсам також повинен відпускати пакети, наприклад, при консолідації всіх пакетів за допомогою --aggressiveпараметра.
Так само git repack -dхоче видалити застарілі пакети, тому потрібно закрити і всі ручки упаковки.
Оновлення січня 2016 року
Це має бути зафіксовано в Git 2.8 (березень 2016 року) (і див. Git 2.19, Q3 2018 нижче)
Див. Комісію d562102 , фіксування dcacb1b , фіксування df617b5 , здійснення 0898c96 (13 січня 2016 р.) Йоганнеса Шинделіна ( dscho) .
(Об’єднав Хуніо С Хамано - gitster- у комітеті 3c80940 , 26 січня 2016 р.)
fetch: випустіть файли пакета перед збиранням сміття
Перед початком автоматичного gc'ing нам потрібно переконатися, що файли пакунків випущені у випадку, якщо їх потрібно буде перепакувати та зібрати сміття.
Багато кодових шляхів, які " gc --auto" запущені до виходу із збережених пакетних файлів, відображалися та залишали відкритими дескриптори файлів, що було непривітним для систем, які не можуть видалити відкриті файли.
Тепер вони закривають пачки, перш ніж це робити.
Це виправлення git-for-widowsвидає 500 .
Дивлячись на тест, який використовується для підтвердження нового підходу , можливим вирішенням (оскільки Git 2.8 ще не вийшов) було б підняти штучно gc.autoPackLimit.
git config gc.autoPackLimit 10000
git fetch
git config gc.autoPackLimit 50 # default value
git 2.8.4 (червень 2016 р.) згадує випуск 755, який також повинен полегшити проблему ( призначати 2db0641 ):
Переконайтеся, що дочірні процеси не успадковують тимчасові ручки файлів
Насправді, згаданий вище git-for-windowsвипуск 500 справді виправлений з Git 2.19, Q3 2018.
Див. " Git - від’єднання файлу .idxта .packпомилка (Єдина ручка, що належить процесу, до цього файлу git.exe) "