Что-то не так происходит с одним из файлов в моем локальном хранилище git. Когда я пытаюсь изменить ветку, он говорит:
Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)
Что бы это могло значить?
Что-то не так происходит с одним из файлов в моем локальном хранилище git. Когда я пытаюсь изменить ветку, он говорит:
Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)
Что бы это могло значить?
Ответы:
Это может означать, что другая программа использует файл, что не позволяет git «перемещать» файл в или из рабочего каталога, когда вы пытаетесь изменить ветви.
У меня такое было в Windows Vista, где eclipse - программа, использующая файл. Файл не может быть фактически открыт в Eclipse, но, возможно, был открыт процессом, запущенным Eclipse.
В этом случае попробуйте закрыть файл в любых приложениях, которые могли его использовать. Если это не сработает, полностью закройте все приложения, которые могли открыть файл.
GitKrakenвы можете получить это, если вы выполняете команды, такие как
У меня была эта проблема, и я решил ее с помощью команды: git gc
вышеупомянутая команда удаляет временные и ненужные файлы. (Уборщик мусора.)
git pullинициируется git gcавтоматически, и gc пытается получить доступ к некоторым файлам .pack и .inx. Они удерживались процессом "windows git", который принадлежал git pullкоманде. Запуск git gcвручную, а затем - git pullдействительно решает проблему.
git gcя снова получал ту же ошибку, когда gcбыл в процессе
отсюда сработало это решение :
Это специфический для Windows ответ, поэтому я знаю, что он не имеет отношения к вам ... Я просто включил его для будущих пользователей.
В моем случае это было потому, что я запускал Git из командной строки без повышенных прав. «Запуск от имени администратора» исправил это для меня.
Ctrl+Cчтобы завершить очень длинный список несвязываемых файлов; вышел из gitbash, моей IDE и приложения GitHub для Windows; перезапустил gitbash в режиме повышенных прав «Запуск от имени администратора»; и побежал git gc --aggressive. Потребовалось время, чтобы завершить, но сделал это без ошибок.
Я столкнулся с этой проблемой при выполнении git pull.
Я попытался, git gcи это решило мою проблему.
В моем случае нет процессов, затрагивающих файл или каталог. Может быть, это происходит, если путь очень длинный, потому что ограничение операционной системы (Windows). Попробуйте включить флаг поддержки longpath в глобальной конфигурации git, как показано ниже:
git config --global core.longpaths true
или попробуйте установить флаг ответа да / нет, если он не противоречит вам
set GIT_ASK_YESNO=false
Если путь слишком длинный, я не нашел успешного решения.
GIT_ASK_YESNO, не могу найти информацию об этом. Откуда это взялось ?
core.longpathsс дополнительным: reset --hard prune gc работал для меня - но пришлось закрыть AndroidStudio, чтобы не испортить его встроенные инструменты
Я попытался, git gcи это решило мою проблему.
Это может быть полезно для кого-то; Если все вышеперечисленное не работает для вас, выполните следующие действия:
Закройте вашу IDE (моя была Eclipse, не уверена, применима ли она к Intellij и другим) или любое другое приложение, которое может использовать git.
Откройте git из командной строки (в моем случае у меня был git bash) и запустите, git gcкак уже упоминалось другими.
Это сделало магию для меня.
Поскольку я использую gitkraken и командную строку, я столкнулся с той же проблемой. И тогда я запускаю git gcкоманду, это решило мою проблему. Поэтому я счастлив и хочу поделиться некоторыми моментами, которые могут оказаться полезными.
Что git gcбудет делать?
git gc удаление недоступных объектов, которые могли быть созданы из предыдущих вызовов git add.
Когда бежать git gc?
Начиная с документа , пользователям рекомендуется выполнять эту задачу на регулярной основе в каждом хранилище, чтобы поддерживать хорошее использование дискового пространства и хорошую производительность.
Как сделать это автоматически настраиваемым?
Некоторые команды git могут автоматически запускать git gc; см. флаг --auto ниже для деталей. Если вы знаете, что делаете, и все, что вам нужно, это навсегда отключить это поведение без дальнейших рассуждений, просто сделайте
git config --global gc.auto 0
У меня была такая проблема на Windows 7, и она оказалась из-за какого-то осиротевшего git.exeпроцесса.
Чтобы решить эту проблему, откройте диспетчер задач и убейте все git.exeпроцессы.
Поскольку gitкоманды недолговечны, обычно вы не должны видеть их git.exeв диспетчере задач. Когда они есть, это обычно означает, что что-то не так, и вы должны убить эти процессы.
В Windows 8: я запустил git gc, и там было сказано, что git gc уже запущен, я запустил git gc --force и запустился сборщик мусора.
Затем я мог бы переключаться между ветками и сливаться без проблем, попробуйте git gc --force.
Возможно, процесс gc не остановился изящно по той или иной причине.
У меня была эта проблема с .tmpфайлами в /.git/objects/packпапке. Я думаю, что-то не получилось во время push или pull, поэтому я удалил эти временные файлы и сбросил HEAD до последнего коммита. Не уверен, если это рекомендуется, но это сработало для меня. Также git count-objects -vдал мне список .tmpфайлов, которые не принадлежат в папке пакета.
Или подавить сообщения y / n в windows git open cmd.exeи запустить:
SETX GIT_ASK_YESNO false
видел здесь: https://twitter.com/petercamfield/status/494805475733807104
git gc, git count-objects -vпомогает в определении оставшихся объектов температурных в packпапке.
Я смог решить эту проблему, открыв Powershell в качестве администратора и оттуда
git checkout <branch_name>
Я столкнулся с той же проблемой, когда делал git pull. Я попробовал ручную служебную команду git 'git gc', и это решило мою проблему.
После запуска команды
git rm -rf foo.bar
Я вижу ошибку
Unlink of file 'foo.bar' failed. Should I try again? (y/n)
Потому что другая программа использует этот файл . Например, когда я запускаю веб-приложение Java в модели отладки или запускаю веб-приложение на сервере, я не могу удалить файл журнала. Выключите сервер приложений (или отключите процесс отладки), повторите попытку
git rm -rf foo.bar
Я вижу, что файл был удален.
После того, как ни один из приведенных выше ответов, похоже, git fetch -pне сработал, бег сделал эту работу за меня.
Я столкнулся с этой проблемой в Windows, вы можете запустить git bash от имени администратора и затем выполнить команды желания, которые решили эту проблему для меня.
Я попробовал каждый совет на этой странице, и ничего не помогло. Я делал git fetchи git reset --hard origin/developmentдал мне ошибку unkink. Я не мог сбросить до последнего коммита.
Что помогло, так это проверить другую ветку, а затем проверить предыдущую. Очень странно, но это решило проблему.
Если вы используете Docker и работаете под управлением Windows 10, вы можете остановить контейнеры, в которых может быть запущен файл. Чтобы показать статусы ваших контейнеров, запустите
docker ps -a
Чтобы остановить их, просто бегите
docker stop <container name or container id>
Это сработало для меня, так как я запускаю свои локальные файлы, используя файл .sh
В Windows видел эту ошибку на git clone (довольно большом) репо. Закрытая SmartGit и замолчала мое программное обеспечение резервного копирования (CrashPlan), и после этого она работала. Не уверен, какой из 2 сделал трюк, но если работает, то это может сделать это и для вас.
У меня была та же проблема при выполнении git pull, и, как указано выше, это было из-за программы, которая содержала эти файлы и не позволяла git pull. Закрытие программы помогло. Обычно среда IDE (например, Eclipse), из которой проверяются файлы, будет держать ее в фоновом режиме. Закрытие того же самого и повторное выполнение git pull решило проблему для меня.
У меня была та же самая ошибка, и закрытие приложения, у которого был открытый файл, решило это. Я смог вернуться и нажать «Y»