Введение
В этом лабораторном занятии (LabEx) вы научитесь проверять определенные настройки конфигурации в репозитории Git. Мы начнем с использования команды git config для запроса отдельных настроек и разберем, как получать значения, такие как глобальное имя пользователя и адрес электронной почты.
Затем мы рассмотрим различные уровни конфигурации Git, с особым вниманием уделив различиям между глобальными и локальными настройками. Вы узнаете, как перечислить все свои настройки на обоих уровнях, чтобы увидеть, как они применяются, и как локальные настройки могут переопределять глобальные. Наконец, мы рассмотрим, как обрабатывать ситуации, когда запрашиваемое значение конфигурации может отсутствовать.
Использование git config для запроса настройки
На этом этапе мы научимся использовать команду git config для запроса настроек Git. Git использует конфигурационные файлы для хранения настроек, которые контролируют его поведение. Эти настройки могут быть применены глобально (для всех ваших репозиториев Git) или локально (для конкретного репозитория).
Сначала проверим глобальную настройку. В разделе настройки мы глобально настроили ваше имя и адрес электронной почты. Вы можете запросить глобальное имя пользователя, используя флаг --global и имя настройки user.name:
git config --global user.name
Вы должны увидеть имя, которое вы настроили при настройке:
Jane Doe
Теперь запросим глобальный адрес электронной почты пользователя:
git config --global user.email
Вы должны увидеть адрес электронной почты, который вы настроили:
jane.doe@example.com
Эти команды показывают вам значения, которые Git будет использовать по умолчанию для ваших коммитов во всех репозиториях на этой системе. Понимание того, как запрашивать эти настройки, является первым шагом в управлении конфигурацией Git.
Проверка глобальных и локальных настроек конфигурации
На этом этапе мы рассмотрим различия между глобальной и локальной конфигурацией Git и узнаем, как просмотреть все ваши настройки.
Git имеет разные уровни конфигурации. Наиболее распространенные из них:
- Уровень системы: Применяется ко всем пользователям на системе. (Менее распространено для отдельных пользователей)
- Глобальный уровень: Применяется к вашей учетной записи на системе для всех ваших репозиториев. Эти настройки хранятся в файле
~/.gitconfig. - Локальный уровень: Применяется только к текущему репозиторию. Эти настройки хранятся в файле
.git/configвнутри репозитория.
Локальные конфигурации переопределяют глобальные, а глобальные - системные.
Чтобы просмотреть все ваши глобальные настройки, вы можете использовать флаги --global --list:
git config --global --list
Вы должны увидеть вывод, похожий на следующий, показывающий user.name и user.email, которые мы настроили, а также init.defaultBranch:
user.name=Jane Doe
user.email=jane.doe@example.com
init.defaultBranch=master
Теперь создадим локальную конфигурацию в репозитории my-time-machine. Вернитесь в каталог репозитория:
cd ~/project/my-time-machine
Мы можем установить локальное имя пользователя, которое будет применяться только к этому конкретному репозиторию. Используем другое имя:
git config user.name "Time Traveler"
Обратите внимание, что на этот раз мы не использовали флаг --global. Это сообщает Git-у установить конфигурацию локально для текущего репозитория.
Теперь просмотрим локальные конфигурации для этого репозитория, используя --local --list:
git config --local --list
Вы должны увидеть только что установленное локальное имя пользователя:
user.name=Time Traveler
Наконец, давайте посмотрим на все конфигурации, которые применяются к текущему репозиторию, включая как локальные, так и глобальные настройки. Git сначала покажет локальные настройки, так как они имеют приоритет:
git config --list
Вывод будет показывать как локальные, так и глобальные настройки. Обратите внимание, что user.name показывает "Time Traveler" (локальная настройка), а user.email показывает "jane.doe@example.com" (глобальная настройка, так как мы не установили локальный адрес электронной почты):
user.name=Time Traveler
user.email=jane.doe@example.com
init.defaultBranch=master
Это демонстрирует, как Git приоритетно использует локальные конфигурации по сравнению с глобальными.
Обработка отсутствующих значений конфигурации
На этом этапе мы узнаем, что происходит, когда вы пытаетесь запросить значение конфигурации Git, которое не существует, и как Git обрабатывает это.
Иногда вы можете попытаться запросить настройку, которая еще не была настроена, как глобально, так и локально. Попробуем запросить гипотетическую настройку с именем core.editor, которую мы явно не установили:
git config core.editor
Поскольку мы не установили локальную настройку core.editor в репозитории my-time-machine, Git будет искать глобальную настройку core.editor. Если она также не установлена (что так и есть в этой среде), Git завершит работу с ошибкой и ничего не выведет или выведет значение по умолчанию, если оно настроено на уровне системы. В зависимости от конфигурации по умолчанию системы вы можете увидеть вывод, похожий на следующий, или вообще ничего не увидеть:
Важно то, что Git не находит конкретное значение для core.editor в локальных или глобальных конфигурационных файлах.
Теперь попробуем запросить настройку, которая, как мы знаем, существует глобально, но не локально, например user.email:
git config user.email
Даже если мы находимся в каталоге my-time-machine, где мы установили локальное значение user.name, мы не установили локальное значение user.email. Git сначала попытается найти локальное значение user.email. Поскольку не найдет его, он затем попытается найти глобальное значение user.email и вернет его:
jane.doe@example.com
Это подтверждает, что если локальная конфигурация отсутствует, Git использует глобальную конфигурацию.
Понимание того, как Git ищет значения конфигурации (сначала локальные, затем глобальные, а затем системные), является важным аспектом для устранения неполадок и эффективного управления вашей средой Git.
Резюме
В этом практическом занятии мы научились использовать команду git config для запроса настроек Git. Мы начали с запроса конкретных глобальных настроек, таких как user.name и user.email, с использованием флага --global. Это показало, как получать отдельные значения конфигурации, которые применяются ко всем репозиториям на системе.
Затем мы изучили различные уровни конфигурации Git: системный, глобальный и локальный, и поняли, что локальные настройки переопределяют глобальные. Мы научились выводить все глобальные настройки с помощью команды git config --global --list, чтобы увидеть полную конфигурацию, примененную к нашей учетной записи пользователя. Это дало полное представление о настройках по умолчанию, которые использует Git.



