⚙️ Настройка разных пользователей Git для разных проектов
В домашней директории есть три папки:
- ~/ProjectHome/
- ~/ProjectWork/
- ~/ProjectOther/
В каждой нужно работать от своего пользователя:
- userHome
- userWork
- userOther
Чтобы работать в каждом проекте без дополнительных переключений, нужно сделать следующее:
1. Добавить настройки в .gitconfig
Откройте файл ~/.gitconfig
и добавьте в него:[includeIf "gitdir:~/ProjectHome/"]
path = ~/.gitconfig-home
[includeIf "gitdir:~/ProjectWork/"]
path = ~/.gitconfig-work
[includeIf "gitdir:~/ProjectOther/"]
path = ~/.gitconfig-other
2. Создать отдельные конфиги для каждого пользователя
Создайте в домашней директории три файла:
- ~/.gitconfig-home
- ~/.gitconfig-work
- ~/.gitconfig-other
3. Прописать пользователя и SSH-ключ в каждом конфиге
Пример содержимого для ~/.gitconfig-home
:[user]
name = userHome
email =userHome@mail.ru
[core]
sshCommand = "ssh -i ~/.ssh/id_userHome_ed25519"
Аналогично создайте .gitconfig-work
и .gitconfig-other
, указав соответствующего пользователя, почту и путь к ключу.
⚠️ При этом из основного .gitconfig
нужно удалить секции [user] и [core.sshCommand], чтобы не было конфликтов.
4. Указать правильный remote для каждого проекта в своей папке
Для проектов в ~/ProjectHome/
:git remote set-url origin git@github.com:userHome/ProjectHome.git
Для проектов в ~/ProjectWork/
:git remote set-url origin git@github.com:userWork/ProjectWork.git
Для проектов в ~/ProjectOther/
:git remote set-url origin git@github.com:userOther/ProjectOther.git
💡 ProjectHome.git, ProjectWork.git, ProjectOther.git
- это просто примеры названий репозиториев, они могут быть любыми.
📌 Важно: эти команды нужно выполнять для каждого проекта отдельно, а не один раз для всей папки.
5. Разместить SSH-ключи
В директории ~/.ssh/
должны находиться три приватных ключа, которые вы сгенерировали для каждого пользователя.
Например:
- id_userHome_ed25519
- id_userWork_ed25519
- id_userOther_ed25519
Убедитесь, что имя ключа соответствует указанному в параметре sshCommand
внутри соответствующего .gitconfig-*
✅ Результат
Теперь можно:
- Открыть в редакторе любой проект из этих папок.
- Работать, делать коммиты и пушить - без ручного переключения пользователя или ключа.
- Открыть сразу несколько проектов из разных папок - всё будет работать корректно.
Можно добавить и больше папок с пользователями - принцип остаётся тем же.
Добавлю еще вариант, подходит для Gitlab:
https://qna.habr.com/q/1400592