Эти core
настройки:
core.bare
core.repositoryformatversion
core.ignorecase
core.filemode
не являются настройками, которые вы должны обычно изменять.Первые два - это собственные внутренние настройки Git, а остальные два информируют Git о поведении вашей операционной системы при использовании в репозитории, который Git только что создал.
В частности, core.filemode
сообщаетПолучите результат следующего эксперимента: 1
Создание нового файла в режиме только чтение / запись (без выполнения).
Сейчас установленобит выполнения.Установлен ли бит выполнения?
Теперь сбросьте бит выполнения.Бит выполнения очищен?
Если бит выполнения следует командам, чтобы установить и очистить его, core.filemode
устанавливается на true
.Это говорит Git, что и вы, и Git можете контролировать, установлен бит выполнения или нет.
Параметр core.ignorecase
устанавливается во время создания нового хранилища с помощью более простого эксперимента:
- Создайте файл
.git/config
.Теперь попробуйте прочитать файл с именем .git/CoNfIg
.Возможно ли это?
Если это так, операционная система откроет файл, имя файла которого отличается только в том случае, если оно действительно.Git записывает эту информацию в core.ignorecase
.
(repositoryformatversion
устанавливается на скомпилированный постоянный ноль или иногда устанавливается на 1, если вы используете некоторые новые функции. Если форматы репозитория изменяются вВ будущем Git установит версию формата в новых репозиториях на соответствующий номер. Флаг bare
устанавливается в зависимости от того, был ли создан пустой клон, возможно с --bare
или с --mirror
.)
Поскольку core.ignorecase
и core.filemode
не предназначены для и предназначены для настройки пользователем, Git не предлагает способа установить для них нечто иное, чем то, что Git жестко кодирует в зависимости от вашей операционной системы.Изменять их немного опасно, поскольку они информируют Git о том, как система ведет себя , и Git может зависеть от этого поведения для правильной работы различных команд Git.Тем не менее, можно лежать с одним или обоими для определенных специальных эффектов.Просто убедитесь, что вы знаете, что делаете, когда делаете это.
(Установка core.filemode
в false
, даже если Git установил бы это true
, в настоящее время "безопасна",для некоторого определения safe, всегда, поэтому, если оно дает вам поведение, которое вы хотите, это на самом деле нормально, по крайней мере, на данный момент. Ни я, ни Git не дают никаких обещаний о будущих версиях Git здесь.)
1 Для Git есть опция времени компиляции: Не запускать эксперимент;просто установите core.filemode
в false каждый раз. Таким образом, для ваших конкретных целей вы можете получить копию исходного кода Git и перестроить ее с установленным NO_TRUSTABLE_FILEMODE
.Но может быть проще просто создать псевдоним или сценарий оболочки, который вы используете вместо git init
или git clone
, который выполняет init-or-clone и затем изменяет настройку.