Кто вы для Git
Настройка Git — это несколько команд git config, которые один раз записывают в файл ~/.gitconfig ваше имя, почту, имя главной ветки и редактор. Из урока вы выполните эти команды и научитесь проверять, что именно записал Git.
Git установлен, терминал знаком. Прежде чем Git начнёт запоминать вашу работу, ему нужно знать, кто вы: каждое сохранение в истории подписывается именем и почтой автора.
$ git config --global user.name "Алекс Иванов"
$ git config --global user.email "alex@example.com"
Разбор по строкам
git config— прочитать или записать настройку Git--global— для всех ваших проектов: значение попадёт в файл ~/.gitconfig в вашей домашней папкеuser.name— название настройки: раздел user, параметр name"Алекс Иванов"— значение. Кавычки нужны, потому что в нём есть пробел
Подставьте свои имя и почту. Почту лучше взять ту же, что вы укажете при регистрации на GitHub: по ней GitHub узнаёт ваши коммиты и привязывает их к профилю. Если не хотите показывать настоящую почту, у GitHub есть скрытый адрес — разберём его, когда заведём аккаунт.
Имя и почта видны другим
Они записываются в каждый ваш коммит, а когда вы выложите проект на GitHub, увидеть их сможет любой, у кого есть доступ к проекту. Это обычная практика, но учитывайте её при выборе почты.
В новых версиях есть и запись git config set --global user.name "..." — результат тот же. Мы пишем привычный вид без set: он работает везде.
Ветка main по умолчанию
У каждого проекта в Git есть главная ветка (англ. branch) — основная линия истории. О ветках поговорим позже, сейчас важно только имя. Исторически Git называл её master, сегодня почти везде принято main, в том числе на GitHub.
Но Git 2.56 всё ещё создаёт master и печатает подсказку при каждом новом проекте, пока ему не сказать иначе:
$ git config --global init.defaultBranch main
init.defaultBranch — имя ветки, которую Git создаст в новом проекте. Без неё вы увидите такую подсказку (в разных версиях текст чуть отличается):
hint: Using 'master' as the name for the initial branch. This default branch name
hint: will change to "main" in Git 3.0. To configure the initial branch name
hint: to use in all of your new repositories, which will suppress this warning,
hint: call:
...
Редактор для сообщений
Иногда Git сам открывает текстовый редактор, например чтобы вы написали сообщение к коммиту. По умолчанию это системный редактор, часто Vim — мощный, но для новичка непонятный. Укажем свой:
$ git config --global core.editor "code --wait"
core.editor — настройка «каким редактором пользоваться». code --wait — запуск VS Code с флагом --wait («ждать»): VS Code не вернёт управление Git, пока вы не закроете файл, иначе Git решил бы, что сообщение пустое. Команда code должна работать в терминале (мы настраивали её в уроке про установку).
Нет VS Code? Возьмите простой редактор nano (он есть на macOS, Linux и в Git Bash):
$ git config --global core.editor "nano"
Как выйти из Vim
Если всё же открылся Vim и вы не знаете, как закрыть окно: нажмите Esc, затем введите :q! и нажмите Enter — это выход без сохранения. Чтобы сохранить и выйти, введите :wq и Enter.
Как Git забирает чужие правки
Когда вы начнёте работать с GitHub, вы будете забирать оттуда правки командой git pull. Если разные правки появились и у вас, и в интернете, Git должен знать, как их объединить:
$ git config --global pull.rebase false
Значение false означает «объединять обычным слиянием» — самый понятный способ; подробности позже. Без настройки git pull в такой ситуации остановился бы с ошибкой fatal: Need to specify how to reconcile divergent branches. («нужно указать, как согласовать разошедшиеся ветки»).
Где хранятся настройки
Все настройки лежат в обычных текстовых файлах. Увидеть, что записано и откуда, можно одной командой:
$ git config --list --show-origin
file:/Users/alex/.gitconfig user.name=Алекс Иванов
file:/Users/alex/.gitconfig user.email=alex@example.com
file:/Users/alex/.gitconfig init.defaultbranch=main
file:/Users/alex/.gitconfig core.editor=code --wait
file:/Users/alex/.gitconfig pull.rebase=false
--list показывает все настройки, а --show-origin добавляет файл, откуда взято каждое значение (в новых версиях Git то же пишут как git config list). Git пишет названия строчными буквами: init.defaultbranch — та же настройка. А вот что лежит в самом файле:
[user]
name = Алекс Иванов
email = alex@example.com
[init]
defaultBranch = main
[core]
editor = code --wait
[pull]
rebase = false
Файл можно править руками. Настройки бывают трёх уровней, и более близкий к проекту побеждает:
| Уровень | Флаг | Где лежит | На что влияет |
|---|---|---|---|
| global | --global | ~/.gitconfig | На все ваши проекты (наш выбор) |
| local | без флага, внутри проекта | .git/config проекта | Только на один проект |
| system | --system | в папке установки Git | На всех пользователей компьютера |
Локальный уровень пригодится, если в одном проекте нужна другая почта: выполните там git config user.email ... без --global.
Переводы строк на Windows
Windows и macOS/Linux обозначают конец строки в файле по-разному, из-за чего при совместной работе появляются лишние различия. Настройка core.autocrlf сглаживает разницу.
- Windows. Если вы оставили установщик по умолчанию, значение уже стоит
true. Проверка:git config core.autocrlfпечатаетtrue. - macOS и Linux. Рекомендуемое значение —
input:git config --global core.autocrlf input.
Git 3.0 уже на подходе, но не вышел
Следующая большая версия Git сделает main веткой по умолчанию и сменит способ вычисления идентификаторов коммитов. Дата выхода пока не назначена; настройки и команды курса останутся рабочими.
Практика у себя
Выполните настройки по шагам. Имя и почту подставьте свои.
Шаг 1. Представьтесь Git (команды ничего не печатают):
$ git config --global user.name "Алекс Иванов"
$ git config --global user.email "alex@example.com"
Шаг 2. Задайте ветку, редактор и способ объединения правок. Если у вас нет VS Code, вместо code --wait подставьте nano:
$ git config --global init.defaultBranch main
$ git config --global core.editor "code --wait"
$ git config --global pull.rebase false
Шаг 3. Только для macOS и Linux:
$ git config --global core.autocrlf input
Шаг 4. Проверьте, что записал Git. Вы должны увидеть свои значения (на Windows в списке будут ещё строки из системного файла установщика):
$ git config --list --show-origin
file:/Users/alex/.gitconfig user.name=Алекс Иванов
file:/Users/alex/.gitconfig user.email=alex@example.com
file:/Users/alex/.gitconfig init.defaultbranch=main
file:/Users/alex/.gitconfig core.editor=code --wait
file:/Users/alex/.gitconfig pull.rebase=false
file:/Users/alex/.gitconfig core.autocrlf=input
Проверьте себя
- В выводе
git config --list --show-originесть вашиuser.nameиuser.emailи строкаinit.defaultbranch=main. - Папка
~/projects/portfolioпо-прежнему пуста: она ещё не репозиторий.
Частые ошибки
| Что видно | Почему | Что делать |
|---|---|---|
В user.name только «Алекс», фамилии нет, хотя ошибки не было | Забыли кавычки (или поставили не прямые, а «ёлочки» из мессенджера): Git принял «Иванов» за отдельный аргумент | Повторите команду с обычными прямыми кавычками — она перезапишет значение |
| Опечатка в почте | Коммиты не привяжутся к вашему профилю GitHub | Выполните команду заново с верной почтой; уже сделанные коммиты сохранят старую |
fatal: not in a git directory | Забыли --global вне проекта: локальная настройка требует репозитория | Добавьте --global |
Author identity unknown при первом коммите | Имя и почта не заданы | Выполните команды из первого раздела урока |
Git отвечает по-русски?
Если в системе выбран русский язык (бывает на Linux и macOS), Git может писать сообщения на русском. Смысл тот же: «Текущая ветка: main» — это On branch main, «Еще нет коммитов» — No commits yet. В курсе выводы английские, так их проще искать в интернете. Английский ответ на одну команду: LC_ALL=C git status.
Что важно запомнить
- Настройка Git — это команды
git config --global ключ значение; они записываются в~/.gitconfig. - Имя и почта подписывают каждый ваш коммит; значения с пробелом берите в кавычки.
init.defaultBranch mainзадаёт имя главной ветки в новых проектах.core.editorзадаёт редактор для сообщений;pull.rebase false— способ объединения правок приgit pull.- Проверить всё можно командой
git config --list --show-origin.
Инструменты готовы: Git установлен, терминал знаком, папка проекта ждёт. В следующем модуле мы превратим папку portfolio в репозиторий и сделаем первый коммит.