Git update-index -assume-unchanged возвращает "фатальный неспособный пометить файл"

У меня та же проблема, что и у ОП в этом посте, но я не понимаю ответ, помеченный как правильный (не вижу, чтобы он объяснял, как исправить ситуацию)

Я делаю это и получаю эту ошибку:

$ git update-index --assume-unchanged web.config
fatal: Unable to mark file web.config
  1. Файл добавлен в хранилище

  2. Это НЕ в .git/info/exclude

  3. Он НЕ находится в .gitignore (он был, но я его .gitignore, затем принудительно добавил web.config с помощью git add -f web.config, зафиксировал и git add -f web.config эти изменения в репозиторий)

  4. Когда я делаю 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

Что вы можете сделать, это:

  1. Перейти к правильному пути, где файл присутствует в вашем локальном (в GITBASH)
  2. Обновите индекс $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. Предоставление полного пути к файлу