Unlink файла Failed.Должен ли я попробовать еще раз? - PullRequest
467 голосов
/ 08 декабря 2010

Что-то не так происходит с одним из файлов в моем локальном репозитории git. Когда я пытаюсь изменить ветку, он говорит:

Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)

Что бы это могло значить?

Ответы [ 31 ]

608 голосов
/ 20 мая 2011

Это может означать, что файл используется другой программой, что не позволяет git "перемещать" файл в или из рабочего каталога, когда вы пытаетесь изменить ветви.

У меня такое было в Windows Vista, где eclipse - программа, "использующая" файл.Файл не может быть фактически открыт в Eclipse, но, возможно, был открыт процессом, запущенным Eclipse.

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

243 голосов
/ 07 октября 2014

У меня была эта проблема, и я решил ее с помощью команды: git gc Приведенная выше команда удаляет временные и ненужные файлы.(Сборщик мусора.)

69 голосов
/ 21 февраля 2015

это решение от здесь сработало для меня:

Это специфический для Windows ответ, поэтому я знаю, что он не относится к вам ... Япросто включив его для будущих пользователей.

В моем случае это было потому, что я запускал Git из командной строки без повышенных прав.«Запуск от имени администратора» исправил это для меня.

33 голосов
/ 18 августа 2015

Я столкнулся с этой проблемой при выполнении git pull.

Я попытался git gc, и это решило мою проблему.

15 голосов
/ 13 августа 2014

В моем случае нет процессов, затрагивающих файл или каталог. Может быть, это происходит, если путь очень длинный, потому что ограничение операционной системы (Windows). Попробуйте включить флаг поддержки longpath в глобальной конфигурации git, как показано ниже:

git config --global core.longpaths true

или попробуйте установить флаг ответа да / нет, если он не противоречит вам

set GIT_ASK_YESNO=false

Если путь слишком длинный, я не нашел успешного решения.

8 голосов
/ 29 сентября 2017

Это может быть полезно для кого-то; Если все вышеперечисленное не работает для вас, выполните следующие действия:

  1. Закройте вашу IDE (у меня была Eclipse, не уверена, относится ли она к Intellij и другим) или к любому другому приложению, которое может использовать git.

  2. Откройте git из командной строки (в моем случае у меня был git bash) и запустите git gc, как упоминалось другими.

Это сделало магию для меня.

8 голосов
/ 31 июля 2015

В моем случае (Win8.1, TortoiseGit запущен), это был процесс под названием «TortoiseSVN status cache», который блокировал файл.

Убив его, я смог запустить «git gc» без необходимостипроблемы.Вышеупомянутый процесс запускается TortoiseGit, поэтому нет необходимости перезапускать его вручную.

7 голосов
/ 29 мая 2018

Поскольку я использую gitkraken и командную строку, я столкнулся с той же проблемой. И тогда я запускаю команду git gc, это решило мою проблему. Поэтому я счастлив и хочу поделиться некоторыми моментами, которые могут оказаться полезными.

Что git gc будет делать?

git gc удаление недоступных объектов, которые могли быть созданы из предыдущих вызовов git add.

Когда запускать git gc?

Начиная с doc , пользователям рекомендуется регулярно выполнять эту задачу в каждом хранилище, чтобы поддерживать хорошее использование дискового пространства и хорошую производительность.

Как сделать это автоматически настраиваемым?

Некоторые команды git могут автоматически запускать git gc; см. флаг --auto ниже для деталей. Если вы знаете, что делаете, и все, что вам нужно, это навсегда отключить это поведение без дальнейших рассуждений, просто наберите

git config --global gc.auto 0
7 голосов
/ 20 июля 2018

Я попытался git gc, и это решило мою проблему.

5 голосов
/ 21 января 2016

В Windows 8: я запустил git gc, и он сказал, что git gc уже запущен, я запустил git gc --force, и сборщик мусора запустился.

Затем я мог без проблем переключать ветви и объединяться,попробуйте git gc --force.

Возможно, процесс gc не остановился изящно по той или иной причине.

...