Что-то не так происходит с одним из файлов в локальном репозитории 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.
В этом случае попробуйте закрыть файл в любых приложениях, которые могли его использовать. Если это не сработает, полностью выйдите из всех приложений, которые могли открыть файл.
У меня была эта проблема и она была решена командой: git gc
Вышеупомянутая команда удаляет временные и ненужные файлы. (Сборщик мусора.)
это решение от здесь работало для меня:
Это ответ на конкретный Windows, поэтому я знаю, что это не относится к вам... Я просто включаю его в интересах будущих поисковиков.
В моем случае это произошло из-за того, что я запускал Git из невыполненной командной строки. "Запуск от имени администратора" исправил его для меня.
Я столкнулся с этой проблемой при выполнении git pull
.
Я попробовал git gc
, и он решил мою проблему.
В моем случае нет процессов, затрагивающих файл или каталог. Возможно, это произойдет, если путь очень длинный, потому что ограничение операционной системы (окна). Попробуйте включить флаг поддержки longpath в глобальной конфигурации git, как указано ниже:
git config --global core.longpaths true
или попробуйте установить флаг ответа "да/нет", если это не противоречит вам.
set GIT_ASK_YESNO=false
Если путь слишком длинный, я не нашел успешного решения.
Это может быть полезно для кого-то; если все вышеперечисленное не работает для вас, выполните следующие действия:
Закройте вашу среду 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
Я попробовал git gc
и это решило мою проблему.
В моем случае (Win8.1, TortoiseGit работает), это был процесс, называемый "TortoiseSVN status cache", который блокировал файл.
Убийство позволило мне запустить "git gc" без каких-либо проблем. Вышеупомянутый процесс запускается TortoiseGit, поэтому нет необходимости вручную перезапускать его.
У меня была такая проблема в Windows 7, и это оказалось из-за какого-то потерянного процесса git.exe
.
Чтобы решить эту проблему, откройте диспетчер задач и убейте все процессы git.exe
.
Так как команды git
недолговечны, вы обычно не видите git.exe
в диспетчере задач. Когда они там, это обычно означает, что что-то не так, и вы должны убить эти процессы.
У меня возникла эта проблема в Windows. Я закрыл IDE (Android Studio) и выбрал YES в оболочке git. Это сработало.
В Windows 8: Я запустил git gc, и он сказал, что git gc уже запущен, я запустил git gc --force и запущен сборщик мусора.
Затем я мог бы переключать ветки и сливаться без каких-либо проблем, попробуйте git gc -force.
Возможно, процесс gc не прекратился изящно по той или иной причине.
У меня возникла проблема с .tmp
файлами в папке /.git/objects/pack
. Я думаю, что что-то не получилось во время нажатия или вытаскивания, поэтому я удалил эти временные файлы и reset HEAD до моего последнего коммита. Не уверен, что это рекомендуется, но это сработало для меня. Кроме того, git count-objects -v
предоставил мне список файлов .tmp
, которые не принадлежали папке пакета.
Или для подавления y/n-сообщений в окнах git open cmd.exe
и запускать:
SETX GIT_ASK_YESNO false
здесь: https://twitter.com/petercamfield/status/494805475733807104
Я столкнулся с такой же проблемой, выполняя 'git pull'. Я попробовал ручную уборку git command 'git gc', и она решила мою проблему.
Я смог решить эту проблему, открыв Powershell от имени администратора и оттуда git checkout <branch_name>
После выполнения различных решений, наконец, git clean -f
помог мне.
EDIT: я снова попал в проблему несколько раз - закрытие всех процессов, зависящих от git, похоже, помогает (например, gitbash, Eclipse IDE и т.д.)
Это ответ на конкретный Windows, поэтому я знаю, что это не относится к вам... Я просто включаю его в интересах будущих поисковиков.
В моем случае это произошло из-за того, что я запускал Git из невыполненной командной строки. "Запуск от имени администратора" исправил его для меня.
Спасибо большое
Как указано выше, что-то еще держит файлы. Дело в том, что эта программа не выглядит подозрительной для нас. Я пытался сделать притяжение git с консоли, а GitKraken открыл. Закрытие GitKraken устранило проблему.
Это может быть отдельное окно gitk для просмотра истории git.
Просто закройте это окно, чтобы исправить эту проблему.
Я столкнулся с этой проблемой, выполняющей одновременно git Bash и Eclipse EGit.
Решение: закройте Eclipse. Также не помешало бы запустить git gc
, как упоминал @hilo.
После того, как ни один из вышеперечисленных ответов не работал, запуск git fetch -p
выполнил эту работу для меня.
Я столкнулся с этой проблемой в Windows, вы можете запустить git bash в качестве администратора, а затем выполнить команды желания, которые решили проблему для меня.
После запуска команды
git rm -rf foo.bar
Я вижу ошибку
Unlink of file 'foo.bar' failed. Should I try again? (y/n)
Потому что другая программа использует этот файл. Например, когда я запускаю веб-приложение Java в модели отладки или запускаю веб-приложение на сервере, я не могу удалить файл журнала. Выключите сервер приложений (или отключите процесс отладки), повторите попытку
git rm -rf foo.bar
Я вижу, что файл был удален.
Если вы разрабатываете веб-приложение, общая причина - забыть выключить сервер. Например, это может быть простой процесс Node.js или в Windows ваш процесс IIS работает более ненавязчиво, как фоновый процесс.
Я попробовал каждый совет на этой странице, и ничего не помогло. Я делал git fetch
а git reset --hard origin/development
дала мне ошибку unkink. Я не мог сбросить до последнего коммита.
Что помогло, так это проверить другую ветку, а затем проверить предыдущую. Очень странно, но это решило проблему.
Если закрытие вашей IDE и запуск различных команд git, перечисленных здесь, не помогут, попробуйте вручную убить все запущенные процессы Java. У меня был Java-процесс, вероятно, оставшийся от Eclipse, который каким-то образом оставил файл конфигурации открытым.
В Windows эта ошибка была обнаружена на git clone
(довольно большой) репо. Закрыл SmartGit и приостановил мое резервное копирование (CrashPlan), и после этого он сработал. Не уверен, какой из 2 сделал трюк, но если он работает, это может сделать это и для вас.
У меня была такая же проблема при выполнении git pull и, как указано выше, это было из-за программы, которая содержала эти файлы и не позволяла тянуть git. Помогло закрыть программу. Как правило, IDE (например, Eclipse), где файлы проверяются, будет удерживать ее в фоновом режиме. Закрытие же и повторное выполнение git pull решили проблему для меня.
У меня была та же самая ошибка, и закрытие приложения, у которого был открытый файл, решило это. Я смог вернуться и нажать "Y"
в моем случае было окно копирования или замены для этого конкретного файла и, следовательно, ошибка отмены связи. я закрыл его и нет ошибки unlink