Как задать имя и почту в Git
Что проверяют
Базу: знаете ли вы уровни конфигурации Git и чем автор коммита отличается от учётной записи для доступа. Следом обычно спрашивают, как держать разные почты для рабочих и личных репозиториев и как исправить автора уже сделанного коммита.
Как отвечать
Команды короткие:
git config --global user.name "Иван Петров"иgit config --global user.email ivan@example.com: для всех репозиториев пользователя, пишется в~/.gitconfig;- без
--globalвнутри репозитория: только для него, пишется в.git/config. Локальная настройка перекрывает глобальную, глобальная перекрывает системную (--system); - проверка:
git config user.emailпокажет действующее значение, аgit config --list --show-originпокажет, из какого файла оно взялось.
Для рабочих и личных проектов удобнее условное включение, чем ручная настройка каждого клона. В ~/.gitconfig добавляется секция includeIf "gitdir:~/work/" с путём к отдельному файлу, где лежит рабочая почта.
Имя и почта не авторизация. Это подпись в метаданных коммита, а доступ к удалённому репозиторию дают SSH-ключ или токен. GitHub и GitLab привязывают коммит к профилю по почте, поэтому опечатка в адресе оставляет коммиты без привязки к вашему аккаунту. Подтвердить авторство можно подписью коммитов через GPG или SSH-ключ.
Для Python-разработчика это всплывает чаще, чем кажется: poetry init подставляет автора из этих же настроек, а CI-джоба, которая сама коммитит (новая версия, сгенерированные файлы), без user.email падает с сообщением «Please tell me who you are».
Исправить последний коммит: git commit --amend --reset-author --no-edit. Переписывание уже опубликованной истории согласуйте с командой, а для правильного отображения авторов часто хватает файла .mailmap.
Где спотыкаются
Думают, что новая настройка поменяет старые коммиты. Она действует только на будущие, прошлое надо переписывать явно.
Ставят --global на общем сервере или в чужом окружении, и коммиты коллег подписываются вашим именем.
Путают user.name с логином и ждут, что это даст доступ к GitHub. Потом удивляются, что push по HTTPS требует токен, а не пароль.