сработал ли данный ответ для вас, если средство просмотра процессов не работает, перезапустите компьютер и затем удалите файл; также вы можете принять ответ, если он сработал для вас
dhaval
1
Также убедитесь, что у процесса git есть права на запись в этот файл.
Это может означать, что другая программа использует файл, что не позволяет git «перемещать» файл в или из рабочего каталога, когда вы пытаетесь изменить ветви.
У меня такое было в Windows Vista, где eclipse - программа, использующая файл. Файл не может быть фактически открыт в Eclipse, но, возможно, был открыт процессом, запущенным Eclipse.
В этом случае попробуйте закрыть файл в любых приложениях, которые могли его использовать. Если это не сработает, полностью закройте все приложения, которые могли открыть файл.
В Windows используйте ProcessExplorer, чтобы найти, какой процесс имеет открытый файл.
Дэйв С
2
Есть ли способ написать скрипт типа «если этот файл не может быть удален (например, файл просто не существует), просто пропустите файл».
2xMax
14
В моем случае это была Visual Studio и ее плагин Git.
Михал Повага
8
В Windows, если у вас нет ProcessExplorer или вы не хотите его загружать, вы можете запустить (Windows + R) «resmon», перейти на вкладку «CPU» и найти имя файла в текстовом поле «Associated Identifiers».
Рафаэль
6
Если вы используете, GitKrakenвы можете получить это, если вы выполняете команды, такие как
rebase
285
У меня была эта проблема, и я решил ее с помощью команды: git gc
вышеупомянутая команда удаляет временные и ненужные файлы. (Уборщик мусора.)
git pullинициируется git gcавтоматически, и gc пытается получить доступ к некоторым файлам .pack и .inx. Они удерживались процессом "windows git", который принадлежал git pullкоманде. Запуск git gcвручную, а затем - git pullдействительно решает проблему.
Никита,
4
Во время работы git gcя снова получал ту же ошибку, когда gcбыл в процессе
Prakash K
4
«Запуск git gc вручную, а затем - git pull действительно решает проблему». Это помогло. Спасибо, Никита.
Сангам
Это помогло мне также. Ран это на Windows , с Git Bash
Аскалон
После запуска мерзавца я получил эту ошибку. Я нажал CTRL + C, чтобы остановить тягу, запустил git gc, а затем снова git pull, проблема исчезла, и ничего не сломалось при прерывании тяги.
Работал на меня. Запустил VS в качестве администратора, а затем запустил командную строку из VS
Sentinel
3
Я: набрал, Ctrl+Cчтобы завершить очень длинный список несвязываемых файлов; вышел из gitbash, моей IDE и приложения GitHub для Windows; перезапустил gitbash в режиме повышенных прав «Запуск от имени администратора»; и побежал git gc --aggressive. Потребовалось время, чтобы завершить, но сделал это без ошибок.
Марк Макклелланд,
Если вы считаете, что это дубликат, вы должны пометить его как таковой, а не добавлять ответ, указывающий на другой ответ
Лиам
2
@Liam Этот вопрос более старый, но этот ответ был только на другой вопрос, и не существует только одного ответа на этот вопрос, который затрудняет просто установить один как дубликат.
Sepehr
Это хорошо сработало для меня. Ни один из предыдущих ответов не сделал. Большое спасибо.
Роберто Родригес
35
Я столкнулся с этой проблемой при выполнении git pull.
Я столкнулся с этой проблемой на компьютере Windows, и это решение изначально не работало. Однако, как только я запустил эту команду из командной строки администратора, она действительно разрешила мою проблему.
Уильям В.
23
В моем случае нет процессов, затрагивающих файл или каталог. Может быть, это происходит, если путь очень длинный, потому что ограничение операционной системы (Windows). Попробуйте включить флаг поддержки longpath в глобальной конфигурации git, как показано ниже:
git config --global core.longpaths true
или попробуйте установить флаг ответа да / нет, если он не противоречит вам
set GIT_ASK_YESNO=false
Если путь слишком длинный, я не нашел успешного решения.
core.longpathsс дополнительным: reset --hard prune gc работал для меня - но пришлось закрыть AndroidStudio, чтобы не испортить его встроенные инструменты
Это единственный ответ, который помог в моем случае с использованием Android Studio
0101100101
10
Поскольку я использую gitkraken и командную строку, я столкнулся с той же проблемой. И тогда я запускаю git gcкоманду, это решило мою проблему. Поэтому я счастлив и хочу поделиться некоторыми моментами, которые могут оказаться полезными.
Что git gcбудет делать?
git gc удаление недоступных объектов, которые могли быть созданы из предыдущих вызовов git add.
Когда бежать git gc?
Начиная с документа , пользователям рекомендуется выполнять эту задачу на регулярной основе в каждом хранилище, чтобы поддерживать хорошее использование дискового пространства и хорошую производительность.
Как сделать это автоматически настраиваемым?
Некоторые команды git могут автоматически запускать git gc; см. флаг --auto ниже для деталей. Если вы знаете, что делаете, и все, что вам нужно, это навсегда отключить это поведение без дальнейших рассуждений, просто сделайте
У меня была такая проблема на Windows 7, и она оказалась из-за какого-то осиротевшего git.exeпроцесса.
Чтобы решить эту проблему, откройте диспетчер задач и убейте все git.exeпроцессы.
Поскольку gitкоманды недолговечны, обычно вы не должны видеть их git.exeв диспетчере задач. Когда они есть, это обычно означает, что что-то не так, и вы должны убить эти процессы.
У меня была эта проблема с .tmpфайлами в /.git/objects/packпапке. Я думаю, что-то не получилось во время push или pull, поэтому я удалил эти временные файлы и сбросил HEAD до последнего коммита. Не уверен, если это рекомендуется, но это сработало для меня. Также git count-objects -vдал мне список .tmpфайлов, которые не принадлежат в папке пакета.
Или подавить сообщения y / n в windows git open cmd.exeи запустить:
Спасибо, черт возьми. Это помогло мне идентифицировать это как проблему разрешения. Как только я установил разрешение Windows для этой папки, это сработало.
Кумар
3
Я столкнулся с той же проблемой, когда делал git pull. Я попробовал ручную служебную команду git 'git gc', и это решило мою проблему.
В то время как это является попыткой ответа, это ничего , что еще не охваченную другими ответами (например, не добавить этот ). Если вы пытаетесь подтвердить, что это решение работает, или хотите поблагодарить автора этого ответа, не публикуйте ответ для этого. После того , как вы заработаете еще больше репутации , вы получите достаточные привилегии для того, чтобы поднять ответы, которые вам нравятся, что является способом переполнения стека, чтобы сказать спасибо.
Попробовав различные решения, наконец-то git clean -fмне помогли.
РЕДАКТИРОВАТЬ: я снова столкнулся с проблемой несколько раз - похоже, что закрытие всех процессов, зависящих от git (например, gitbash, Eclipse IDE и т. Д.)
Как указано выше, что-то еще хранит файлы. Дело в том, что эта программа не выглядит для нас подозрительно. Я пытался сделать git pull из консоли, открыв GitKraken. Закрытие GitKraken решило проблему.
Unlink of file 'foo.bar' failed. Should I try again? (y/n)
Потому что другая программа использует этот файл . Например, когда я запускаю веб-приложение Java в модели отладки или запускаю веб-приложение на сервере, я не могу удалить файл журнала. Выключите сервер приложений (или отключите процесс отладки), повторите попытку
Я столкнулся с этой проблемой, запустив git Bash и Eclipse EGit одновременно. Решение: закройте Eclipse. Также не мешало бы бежать, git gcкак упомянул @khilo.
Я столкнулся с этой проблемой в Windows, вы можете запустить git bash от имени администратора и затем выполнить команды желания, которые решили эту проблему для меня.
Если вы разрабатываете веб-приложение, общая причина - забыть выключить сервер. Например, это может быть простой процесс Node.js или в Windows ваш процесс IIS работает более ненавязчиво, как фоновый процесс.
Я попробовал каждый совет на этой странице, и ничего не помогло. Я делал git fetchи git reset --hard origin/developmentдал мне ошибку unkink. Я не мог сбросить до последнего коммита.
Что помогло, так это проверить другую ветку, а затем проверить предыдущую. Очень странно, но это решило проблему.
Если закрытие вашей IDE и запуск различных команд git, перечисленных здесь, не помогут, попробуйте вручную убить все запущенные процессы Java. У меня был Java-процесс, вероятно, оставшийся от Eclipse, который каким-то образом оставил файл конфигурации открытым.
Если вы используете 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 решило проблему для меня.
Ответы:
Это может означать, что другая программа использует файл, что не позволяет 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
был в процессеотсюда сработало это решение :
источник
Ctrl+C
чтобы завершить очень длинный список несвязываемых файлов; вышел из gitbash, моей IDE и приложения GitHub для Windows; перезапустил gitbash в режиме повышенных прав «Запуск от имени администратора»; и побежалgit gc --aggressive
. Потребовалось время, чтобы завершить, но сделал это без ошибок.Я столкнулся с этой проблемой при выполнении
git pull
.Я попытался,
git gc
и это решило мою проблему.источник
В моем случае нет процессов, затрагивающих файл или каталог. Может быть, это происходит, если путь очень длинный, потому что ограничение операционной системы (Windows). Попробуйте включить флаг поддержки longpath в глобальной конфигурации git, как показано ниже:
или попробуйте установить флаг ответа да / нет, если он не противоречит вам
Если путь слишком длинный, я не нашел успешного решения.
источник
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 ниже для деталей. Если вы знаете, что делаете, и все, что вам нужно, это навсегда отключить это поведение без дальнейших рассуждений, просто сделайте
источник
В моем случае (Win8.1, TortoiseGit запущен), это был процесс под названием «TortoiseSVN status cache», который блокировал файл.
Убив его, я без проблем запустил git gc. Вышеуказанный процесс запускается TortoiseGit, поэтому нет необходимости перезапускать его вручную.
источник
У меня была такая проблема на Windows 7, и она оказалась из-за какого-то осиротевшего
git.exe
процесса.Чтобы решить эту проблему, откройте диспетчер задач и убейте все
git.exe
процессы.Поскольку
git
команды недолговечны, обычно вы не должны видеть ихgit.exe
в диспетчере задач. Когда они есть, это обычно означает, что что-то не так, и вы должны убить эти процессы.источник
Я получил эту проблему в Windows. Я закрыл свою IDE (Android Studio) и выбрал ДА в git shell. Это сработало.
источник
В 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
и запустить:видел здесь: https://twitter.com/petercamfield/status/494805475733807104
источник
git gc
,git count-objects -v
помогает в определении оставшихся объектов температурных вpack
папке.Я смог решить эту проблему, открыв Powershell в качестве администратора и оттуда
git checkout <branch_name>
источник
Я столкнулся с той же проблемой, когда делал git pull. Я попробовал ручную служебную команду git 'git gc', и это решило мою проблему.
источник
Попробовав различные решения, наконец-то
git clean -f
мне помогли.РЕДАКТИРОВАТЬ: я снова столкнулся с проблемой несколько раз - похоже, что закрытие всех процессов, зависящих от git (например, gitbash, Eclipse IDE и т. Д.)
источник
Как указано выше, что-то еще хранит файлы. Дело в том, что эта программа не выглядит для нас подозрительно. Я пытался сделать git pull из консоли, открыв GitKraken. Закрытие GitKraken решило проблему.
источник
После запуска команды
Я вижу ошибку
Потому что другая программа использует этот файл . Например, когда я запускаю веб-приложение Java в модели отладки или запускаю веб-приложение на сервере, я не могу удалить файл журнала. Выключите сервер приложений (или отключите процесс отладки), повторите попытку
Я вижу, что файл был удален.
источник
Это может быть отдельное окно gitk, запущенное для просмотра истории git.
Просто закройте это окно, чтобы решить эту проблему.
источник
Я столкнулся с этой проблемой, запустив git Bash и Eclipse EGit одновременно. Решение: закройте Eclipse. Также не мешало бы бежать,
git gc
как упомянул @khilo.источник
После того, как ни один из приведенных выше ответов, похоже,
git fetch -p
не сработал, бег сделал эту работу за меня.https://git-scm.com/docs/git-fetch
источник
Я столкнулся с этой проблемой в Windows, вы можете запустить git bash от имени администратора и затем выполнить команды желания, которые решили эту проблему для меня.
источник
Если вы разрабатываете веб-приложение, общая причина - забыть выключить сервер. Например, это может быть простой процесс Node.js или в Windows ваш процесс IIS работает более ненавязчиво, как фоновый процесс.
источник
Я попробовал каждый совет на этой странице, и ничего не помогло. Я делал
git fetch
иgit reset --hard origin/development
дал мне ошибку unkink. Я не мог сбросить до последнего коммита.Что помогло, так это проверить другую ветку, а затем проверить предыдущую. Очень странно, но это решило проблему.
источник
Если закрытие вашей IDE и запуск различных команд git, перечисленных здесь, не помогут, попробуйте вручную убить все запущенные процессы Java. У меня был Java-процесс, вероятно, оставшийся от Eclipse, который каким-то образом оставил файл конфигурации открытым.
источник
Если вы используете Docker и работаете под управлением Windows 10, вы можете остановить контейнеры, в которых может быть запущен файл. Чтобы показать статусы ваших контейнеров, запустите
docker ps -a
Чтобы остановить их, просто бегите
docker stop <container name or container id>
Это сработало для меня, так как я запускаю свои локальные файлы, используя файл .sh
источник
Работал у меня, Пробовал на окнах:
Остановите ваш сервер из IDE или закройте IDE
Intellij / Ecllipse или любой, это будет работать.
источник
В Windows видел эту ошибку на
git clone
(довольно большом) репо. Закрытая SmartGit и замолчала мое программное обеспечение резервного копирования (CrashPlan), и после этого она работала. Не уверен, какой из 2 сделал трюк, но если работает, то это может сделать это и для вас.источник
У меня была та же проблема при выполнении git pull, и, как указано выше, это было из-за программы, которая содержала эти файлы и не позволяла git pull. Закрытие программы помогло. Обычно среда IDE (например, Eclipse), из которой проверяются файлы, будет держать ее в фоновом режиме. Закрытие того же самого и повторное выполнение git pull решило проблему для меня.
источник
У меня была та же самая ошибка, и закрытие приложения, у которого был открытый файл, решило это. Я смог вернуться и нажать «Y»
источник