Как обрабатывать символы с акцентом в именах файлов в Git в Mac OS X, преобразованные в unicode

В моем репозитории Git есть акцентированные файлы как éíóúàììùùùõ_800x600.jpg, но после создания клона я не могу сделать pull, потому что файл выглядит как измененный:

$git clone [...]
done

$git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   "a\314\201e\314\201i\314\201o\314\201u\314\201a\314\200e\314\200i\314\200o\314\200u\314\200a\314\203o\314\203_800x600.jpg"

Тем не менее, я не могу добавить, удалить, reset или закрепить файл.

Я пробовал:

$git add a\314\201e\314\201i\314\201o\314\201u\314\201a\314\200e\314\200i\314\200o\314\200u\314\200a\314\203o\314\203_800x600.jpg
fatal: pathspec 'a314201e314201i314201o314201u314201a314200e314200i314200o314200u314200a314203o314203_800x600.jpg' did not match any files

$git stash
No local changes to save

$git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   "a\314\201e\314\201i\314\201o\314\201u\314\201a\314\200e\314\200i\314\200o\314\200u\314\200a\314\203o\314\203_800x600.jpg"

Как дескриптор с акцентированными файлами преобразуется в unicode?

Ответ 1

Вам нужно установить для параметра core.precomposeunicode значение true на Mac и снова клонировать репозиторий.

git config --global core.precomposeunicode true

Как описано в git странице конфигурации, этот параметр связан с конкретной декомпозицией символов Unicode в Mac OS:

Этот параметр используется только для реализации Mac OS git. Когда core.precomposeunicode = true, git возвращает unicode-декомпозицию имен файлов, выполняемых Mac OS. Это полезно при совместном использовании репозитория между Mac OS и Linux или Windows. (Git для Windows 1.7.10 или более поздней версии, или git под cygwin 1.7). Когда false, имена файлов обрабатываются полностью прозрачно с помощью git, которая обратно совместима со старыми версиями git.

Что указывается в man-странице, заключается в том, что этот параметр не имеет обратного эффекта для репозитория, он вступает в силу только после клонирования в репозитории.

Ссылка: Ответа на этот вопрос Leo Koppelkamm "Git и проблема Umlaut в Mac OS X"