Как разделить личные и рабочие git-конфиги без костылей

Опубликовано 21 февр. 2026 г.

При работе с git репозиториями, частенько попадаешь в просак с таким:

git config --global user.name
git config --global user.email

Один раз забил свои явки-пароли и затем git при любом коммите или пуше будет подставлять эти данные. То есть в историю коммитов будет забиваться user.name и user.email. Это логично и понятно.

ЧИТАТЬ ПЕРВЫМ В ТЕЛЕГРАМ   ЧИТАТЬ ПЕРВЫМ В MAX

Но если у тебя смешаны личные и рабочие репозитории, начинается цирк с конями. Я тысячу раз комитил в рабочую репу под личным user.name и user.email и получал за это по рукам. Получал конечно сам от себя.

Потому что смешивать личное и рабочее — фуфу!

Из этой ситуации можно выйти по-разному, кто-то изобретает безумные Bash скрипты или пишет хуки, кто-то постоянно правит конфиги перед пушем. Короче костыль на костыле. Но есть решение лучше и нативнее.

Расчехляем хоумлабу!

У нас будет 2 папки:

mkdir -p ~/projects/personal
mkdir -p ~/projects/work

Настраиваем основной конфиг:

vim ~/.gitconfig
[user]
    name = Roman Shubin
    email = shuba@bashdayz.ru

[includeIf "gitdir:~/projects/work/"]
    path = ~/.gitconfig_work

Нюанс: / в конце work обязателен. Git интерпретирует gitdir: как префикс пути к каталогу .git.

Создаем рабочий конфиг ~/.gitconfig_work

[user]  
	name = Linux Factory
	email = exe@linuxfactory.ru

На этом танцы с бубном закончились, проверяем:

mkdir -p ~/projects/personal/app  
cd ~/projects/personal/app  
git init

git config user.email
git config --show-origin user.email

Ага, видим что для личных проектов будет применяться shuba@bashdayz.ru и берется он из ~/.gitconfig. Последние 2 команды, как раз выводят эту информацию в терминал. Хорошо, теперь:

mkdir -p ~/projects/work/app  
cd ~/projects/work/app  
git init

git config user.email
git config --show-origin user.email

Да твоюж мать! Видим Linux Factory и exe@linuxfactory.ru. Что и требовалось доказать, данные берутся из файла ~/.gitconfig_work.

Всё, мы успешно разделили контекст между личными и рабочими проектами. Таких инклудов ты можешь насоздавать сколько угодно. Самое главное это работает без костылей и каких-то лишних обвесов вокруг git.

Git скрывает очень много интересного и не всегда это очевидно. Такие дела, изучай!

Комментарии