Git update-index -assume-unchanged возвращает "фатальный неспособный пометить файл"
У меня та же проблема, что и у ОП в этом посте, но я не понимаю ответ, помеченный как правильный (не вижу, чтобы он объяснял, как исправить ситуацию)
Я делаю это и получаю эту ошибку:
$ git update-index --assume-unchanged web.config
fatal: Unable to mark file web.config
-
Файл добавлен в хранилище
-
Это НЕ в .git/info/exclude
-
Он НЕ находится в .gitignore
(он был, но я его .gitignore
, затем принудительно добавил web.config с помощью git add -f web.config
, зафиксировал и git add -f web.config
эти изменения в репозиторий)
-
Когда я делаю Git ls -f iles -o, его там нет
Так что я могу сделать, чтобы исправить?
Ответы
Ответ 1
У меня была такая же проблема, как у вас, и я выполнил те же четыре шага, что вы указали выше, и имел те же результаты. Это включало тот факт, что мой файл был указан при выполнении git ls-files -o
. Однако в моем случае я также попытался выполнить git update-index --assume-unchanged
в отношении файла, который не был указан при выполнении ls-files -o
, и я все же получил ту же ошибку "fatal: Unable to mark file
".
Я подумал, что, возможно, это была ошибка, и загрузил последнюю версию git, но это не помогло.
Я наконец понял, что эта команда чувствительна к регистру! Это включает полный путь и имя файла. После обновления пути к каталогу, чтобы полный путь был указан с надлежащим корпусом, команда выполнялась должным образом.
Обратите внимание, что это было с Git для Windows, поэтому результаты могут отличаться от других платформ.
Ответ 2
У меня была такая же проблема на Mac. Чувствительность к регистру не была проблемой для меня - проблема заключалась в том, что мне сначала понадобилось reset my git:
Проблема:
git update-index --assume-unchanged index.php
fatal: Unable to mark file index.php
Решение:
git reset HEAD
Unstaged changes after reset:
M index.php
git update-index --assume-unchanged index.php
Ответ 3
В моем случае дерево, которое я отмечал, было каталогом, а не файлом, как в вашем случае, и мне не хватало косую черту после его имени.
Неверно -
git update-index --assume-unchanged directory-name
Правильно -
git update-index --assume-unchanged directory-name/
Заметьте косую черту (/) в конце.
Ответ 4
Неустранимый: Невозможно пометить файл Localization/el-GR.js
Что вы можете сделать, это:
- Перейти к правильному пути, где файл присутствует в вашем локальном (в GITBASH)
- Обновите индекс
$git update-index --assume-unchanged <file name>
Это помогло мне! :)
Ответ 5
У меня возникла эта проблема, когда я пытался отформатировать файлы *.orig.
Вот что я сделал, чтобы разобраться с ними:
$git reset -- *.orig
если это не работает:
$git clean -fd
Ответ 6
Убедитесь, что файл добавлен в git repo, если не добавить файл в репозиторий git, а затем попробуйте, он будет работать.
Ответ 7
Если ваш путь имеет пробелы, вы можете получить эту ошибку, даже если у вас есть корпус справа.
Это приводит к "фатальной" ошибке:
git update-index --assume-unchanged code/Solution Files/WebEssentials-Settings-json
Чтобы исправить это, просто добавьте кавычки по пути.
git update-index --assume-unchanged "code/Solution Files/WebEssentials-Settings-json"
Ответ 8
Моя проблема заключалась в том, что я попробовал команду с подстановочным знаком *, предполагая, что она будет рекурсивной, но это не так.
Так что я сделал
$ git reset HEAD
Unstaged changes after reset:
M .gradle/1.9/taskArtifacts/cache.properties.lock
M .gradle/1.9/taskArtifacts/fileHashes.bin
M .gradle/1.9/taskArtifacts/fileSnapshots.bin
M .gradle/1.9/taskArtifacts/outputFileStates.bin
M .gradle/1.9/taskArtifacts/taskArtifacts.bin
выполнение
$ git update-index --assume-unchanged .gradle/1.9/taskArtifacts/*
работал на меня тогда и не привел к OP и моей проблеме.
Ответ 9
--assume-unchanged
относится к медленным файловым системам, и пользователи обещают, что Git не нужно проверять этот файл, так как Git может считать его неизменным. Но какая-то команда все еще проверяет и производит "сюрприз"!
Не используйте файлы, которые меняются.
Извините, что являюсь носителем этой новости (у меня есть исправление для изменения этой документации).
Ответ 10
Убедитесь, что у вас установлен "web.config".
Если это не так, вы получите это сообщение об ошибке.
Ответ 11
Может быть, полезно для кого-то.
У меня была такая же проблема, и у меня не было проблемы с синтаксисом, без имени с пробелами, без пути, а команда git reset не работала. Я отправлялся из папки внутри apache www, а служба apache была остановлена. Запущен еще один сервис apache, и ошибка исчезла.
Ответ 12
В моем случае я попытался использовать любой из методов, описанных выше, но безуспешно.
После многих попыток я просто подумал добавить свой файл в индекс через.
git add myfile.php
Гит отказался от этого действия, но он посоветовал мне сделать это принудительно.
git add myfile.php -f
И это сработало для меня.
Ответ 13
Для всех будущих посетителей. Ничто из перечисленного не разрешило мою проблему.
Я понял, что файл .gitignore
должен быть помещен в правильный каталог. В моем случае, как только я переместил .gitignore
в корневой каталог приложения, проблема была решена.
Ответ 14
Проверьте, существует ли файл, который нужно пометить, и правильно ли он написан, особенно путь к файлу и разделитель файлов. Разделители файлов систем Windows и Linux находятся в разных направлениях.
Ответ 15
Я обнаружил, что иногда это не работает, потому что вы уже зафиксировали файл в своем .gitignore и сделали push или pull. Вам нужно только сделать push, и ваш файл должен игнорироваться при последующих фиксациях, даже когда вы локально изменяете файл.
Ответ 16
У меня была та же проблема с Cygwin в Windows. Предоставление полного пути к файлу