Подтвердить что ты не робот

Почему отображается "Ошибка обновления индекса Git"

Я использую Windows. При создании файлов я получаю эту ошибку.

Updating the Git index failed. A rescan will be automatically started to resynchronize git-gui.

а затем список файлов, которые были преобразованы из LF в CRLF

После большого количества чтения по проблеме CRLF/LF с использованием кросс-платформы Git я более или менее понимаю, что происходит, и я пытаюсь определить, какая настройка автокретка лучше для меня, но я не могу понять, почему Git говорит, что обновление индекса не удалось. Я понимаю, что он преобразовал EOF, и в чем проблема с этим и почему он говорит мне, что обновление индекса потерпело неудачу. Нужно ли что-то исправлять (кроме выбора подходящей установки автокрест) или я могу просто продолжить

Затем у меня есть два варианта: "Продолжить" и "Разблокировать индекс", что они означают и что является лучшим способом действий.

4b9b3361

Ответ 1

git config --global core.autocrlf false

Всегда была моя рекомендация (см. Git 1.6.4 бета на Windows (msysgit) - завершение линии Unix или DOS).

Однако в вашем случае вы можете "Продолжить", но это предупреждение указывает на то, что преобразование определенных файлов может быть не обратимым:

core.safecrlf

Если true, make git проверяет, является ли преобразование CRLF обратимым, когда включено преобразование конца строки. git будет проверять, будет ли команда изменять файл в дереве работы прямо или косвенно. Например, запись файла с последующей проверкой того же файла должна привести к исходному файлу в дереве работ. Если это не так для текущей настройки core.autocrlf, git отклонит файл.
Переменная может быть установлена ​​на "warn", и в этом случае git будет предупреждать только о необратимом преобразовании, но продолжить операцию.

Если вы не хотите видеть это предупреждение, как описано в этот поток, вы можете установить core.safecrlf в false.

Вы также можете спрятать свои файлы в меню инструментов git gui и добавить некоторые параметры к этим инструментам, например, с помощью Git файл конфигурации.
Интересен тот факт, что для каждого инструмента вы можете добавить:

guitool.<name>.norescan

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


Не могли бы вы рассказать немного о индексе разблокировки

вы можете увидеть это сообщение в index.tcl git -gui script: он удаляет файл index.lock git -gui создает при манипулировании индексом.
Вы можете увидеть больше на странице документации "файл блокировки файла" :

Взаимное исключение.
Когда мы выписываем новый индексный файл, сначала создаем новый файл $GIT_DIR/index.lock, записываем в него новое содержимое и переименовываем его в конечный пункт назначения $GIT_DIR/index.
Мы пытаемся создать файл $GIT_DIR/index.lock с O_EXCL, чтобы мы могли заметить и сбой, когда кто-то еще пытается обновить индексный файл.

Ответ 2

Я также столкнулся с этим, даже если моя установка core.autocrlf уже false и core.safecrlf не установлена. Я подозреваю, что виновником является настройка конфигурации diff.astextplain.textconv.

Когда я запустил git config --list, на выходе была показана следующая строка:

diff.astextplain.textconv=astextplain

Я не думаю, что этот параметр на самом деле связан с предупреждением/ошибкой, но он вдохновил меня взглянуть на преобразование текста, которое может быть выполнено. После небольшого дублирования в режиме онлайн и в моем репо я обнаружил следующую строку в файле repo.gitattributes:

* text=auto

[Я, вероятно, получил файл .gitattributes от GitHub.]

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

была всегда, я решил удалить этот файл из своего репо, После этого постановка одних и тех же файлов больше не запрашивала у меня предупреждение "Ошибка обновления Git с ошибкой".