Использование разных user/email в git репозиториях

У каждого из нас скорее всего есть разные репозитории на работе и дома, или разные хранилища GitHub, GitLab, Bitbucket. Коммиты желательно должны подписываться разными username и email в соответствии с данными профиля.

А то получается один коммит сделал Konstantin Sh, а следующий Shibkov Konstantin и с другим email. И если хочется этого избежать - сейчас это пофиксим.

Настройки для отдельного репозитория

Самый простой и быстрый вариант, это для нужного репозитория прописать свою пару email/username. Достаточно выполнить две команды внутри репозитория:

git config user.email k@shibkov.com
git config user.name Konstantin Shibkov

Теперь для репозитория используется выбранная пара. Это отлично работает для одного репозитория.

Единая настройка для множества реп

Если у вас много репозиториев, например множество проектов на github, микросервисы. Прописывать для каждого репа уже муторно, да и просто забыть это сделать после клонирования.

Начиная с Git версии 2.13, появилась возможность выбора .gitconfig файла по условию. Например, для определенной директории настроить свою конфигурацию и тогда все репозитории будут использовать единые настройки.

Посмотрим содержимое .gitconfig. Во всех системах он лежит в домашней директории пользователя по пути ~/.gitconfig

У меня выглядит так:

[user]
    name = Konstantin Shibkov
    email = k@shibkov.com

И рабочие репозитории лежат в директории ~/work. Для всех реп в директории, хотим использовать связку Konstantin Sh и work@work.com.

Создадим новый файл .gitconfig в ~/work и записываю:

[user]
    name = Konstantin Sh
    email = work@work.com

И в основном файле ~/.gitconfig добавляем условие:

[user]
    name = Konstantin Shibkov
    email = k@shibkov.com
[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig

После этого, все репозитории внутри work будут использовать данные name и email из ~/work/.gitconfig

Настройки из условия работают только в диреториях git, если вы проверите name и email в самой work или вложенных папок, в которых нет git репозитория, - то увидите данные из базового конфига.

Создано при помощи Hugo
Тема Stack, дизайн Jimmy