Не удалось удалить файл. Должен ли я повторить попытку?

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

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

Что это может означать?

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

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

В моем случае это произошло из-за того, что я запускал Git из невыполненной командной строки. "Запуск от имени администратора" исправил его для меня.

Ответ 4

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

Я попробовал git gc, и он решил мою проблему.

Ответ 5

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

git config --global core.longpaths true

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

set GIT_ASK_YESNO=false

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

Ответ 6

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

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

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

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

Ответ 7

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

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

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

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

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

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

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

git config --global gc.auto 0

Ответ 8

Я попробовал git gc и это решило мою проблему.

Ответ 9

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

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

Ответ 10

У меня была такая проблема в Windows 7, и это оказалось из-за какого-то потерянного процесса git.exe.

Чтобы решить эту проблему, откройте диспетчер задач и убейте все процессы git.exe.

Так как команды git недолговечны, вы обычно не видите git.exe в диспетчере задач. Когда они там, это обычно означает, что что-то не так, и вы должны убить эти процессы.

Ответ 11

У меня возникла эта проблема в Windows. Я закрыл IDE (Android Studio) и выбрал YES в оболочке git. Это сработало.

Ответ 12

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

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

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

Ответ 13

У меня возникла проблема с .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

Ответ 14

Я столкнулся с такой же проблемой, выполняя 'git pull'. Я попробовал ручную уборку git command 'git gc', и она решила мою проблему.

Ответ 15

Я смог решить эту проблему, открыв Powershell от имени администратора и оттуда git checkout <branch_name>

Ответ 16

После выполнения различных решений, наконец, git clean -f помог мне.

EDIT: я снова попал в проблему несколько раз - закрытие всех процессов, зависящих от git, похоже, помогает (например, gitbash, Eclipse IDE и т.д.)

Ответ 17

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

В моем случае это произошло из-за того, что я запускал Git из невыполненной командной строки. "Запуск от имени администратора" исправил его для меня.

Спасибо большое

Ответ 18

Как указано выше, что-то еще держит файлы. Дело в том, что эта программа не выглядит подозрительной для нас. Я пытался сделать притяжение git с консоли, а GitKraken открыл. Закрытие GitKraken устранило проблему.

Ответ 19

Это может быть отдельное окно gitk для просмотра истории git.

Просто закройте это окно, чтобы исправить эту проблему.

Ответ 20

Я столкнулся с этой проблемой, выполняющей одновременно git Bash и Eclipse EGit. Решение: закройте Eclipse. Также не помешало бы запустить git gc, как упоминал @hilo.

Ответ 21

После того, как ни один из вышеперечисленных ответов не работал, запуск git fetch -p выполнил эту работу для меня.

https://git-scm.com/docs/git-fetch

Ответ 22

Я столкнулся с этой проблемой в Windows, вы можете запустить git bash в качестве администратора, а затем выполнить команды желания, которые решили проблему для меня.

Ответ 23

После запуска команды

git rm -rf foo.bar

Я вижу ошибку

Unlink of file 'foo.bar' failed. Should I try again? (y/n)

Потому что другая программа использует этот файл. Например, когда я запускаю веб-приложение Java в модели отладки или запускаю веб-приложение на сервере, я не могу удалить файл журнала. Выключите сервер приложений (или отключите процесс отладки), повторите попытку

git rm -rf foo.bar

Я вижу, что файл был удален.

Ответ 24

Если вы разрабатываете веб-приложение, общая причина - забыть выключить сервер. Например, это может быть простой процесс Node.js или в Windows ваш процесс IIS работает более ненавязчиво, как фоновый процесс.

Ответ 25

Я попробовал каждый совет на этой странице, и ничего не помогло. Я делал git fetch а git reset --hard origin/development дала мне ошибку unkink. Я не мог сбросить до последнего коммита.

Что помогло, так это проверить другую ветку, а затем проверить предыдущую. Очень странно, но это решило проблему.

Ответ 26

Если закрытие вашей IDE и запуск различных команд git, перечисленных здесь, не помогут, попробуйте вручную убить все запущенные процессы Java. У меня был Java-процесс, вероятно, оставшийся от Eclipse, который каким-то образом оставил файл конфигурации открытым.

Ответ 27

В Windows эта ошибка была обнаружена на git clone (довольно большой) репо. Закрыл SmartGit и приостановил мое резервное копирование (CrashPlan), и после этого он сработал. Не уверен, какой из 2 сделал трюк, но если он работает, это может сделать это и для вас.

Ответ 28

У меня была такая же проблема при выполнении git pull и, как указано выше, это было из-за программы, которая содержала эти файлы и не позволяла тянуть git. Помогло закрыть программу. Как правило, IDE (например, Eclipse), где файлы проверяются, будет удерживать ее в фоновом режиме. Закрытие же и повторное выполнение git pull решили проблему для меня.

Ответ 29

У меня была та же самая ошибка, и закрытие приложения, у которого был открытый файл, решило это. Я смог вернуться и нажать "Y"

Ответ 30

в моем случае было окно копирования или замены для этого конкретного файла и, следовательно, ошибка отмены связи. я закрыл его и нет ошибки unlink