Глава 23 · Часть I · Git и GitHub с нуля

Первая настройка Git

Прежде чем сделать первый коммит, Git нужно один раз сказать, кто вы, — это записывается в каждый коммит.

SafeSort · Часть 1 из 6Git и GitHub

Прежде чем сделать первый коммит, Git нужно один раз сообщить имя и email. эта информация записывается в каждый коммит и остаётся в истории навсегда.

~/git_demo $ git init
Initialized empty Git repository in .../git_demo/.git/
~/git_demo $ git config user.name "Ваше Имя"
~/git_demo $ git config user.email "you@example.com"
~/git_demo $ git config --local --list
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
user.name=Ваше Имя
user.email=you@example.com
Это имя записывается в коммиты, а не только в профиль GitHub
user.name/user.email обозначают не логин GitHub и не то же самое, что имя в профиле. Это данные, которые буквально попадают в каждый коммит как автор изменения, и их видно всем, кто посмотрит историю, в том числе после публикации на GitHub.

Флаг --local относится только к этому одному репозиторию. Чтобы не повторять настройку для каждого нового проекта, обычно используют --global — тогда имя и почта применяются ко всем репозиториям на этом компьютере:

Терминал
git config --global user.name "Ваше Имя"
git config --global user.email "you@example.com"

Имя ветки по умолчанию

Здесь легко ошибиться: сам Git до сих пор называет самую первую ветку нового репозитория master, если её имя никак не настроено, — это встроенное поведение не изменилось. В версии 2.28 у Git появилась только сама настройка init.defaultBranch, позволяющая задать другое имя по умолчанию, — а не новое поведение "из коробки". Имя main стало привычным, потому что GitHub, GitLab и многие редакторы настраивают эту опцию сами при установке, но сам Git её не устанавливает. Поэтому Cartesian School задаёт её явно, а не полагается на то, что окажется настроено на конкретном компьютере:

Терминал
git config --global init.defaultBranch main
Git 2.28 добавил настройку, а не новое поведение
Легко перепутать эти две вещи. Git 2.28 (выпущен в 2020 году) добавил опцию init.defaultBranch — раньше такой настройки не существовало вообще, и переименовать первую ветку можно было только вручную после создания репозитория. Но сама опция ничего не меняет, пока её не задать: без неё Git по-прежнему создаёт ветку master, в любой версии, вплоть до самой новой. Проверить это можно на чистом окружении без ~/.gitconfig — там git init создаёт именно master.
Официальная документация
Set up Git
Перевод и учебная адаптация официальной документации GitHub. Исходный материал — CC BY 4.0.

Коротко

  • user.name/user.email записываются в каждый коммит — это данные автора, а не логин GitHub.
  • --global применяет настройку сразу ко всем репозиториям на компьютере.
  • Git 2.28 добавил настройку init.defaultBranch, но встроенное имя первой ветки по-прежнему master — main нужно задать явно.