Возникла потребность настраивать по-разному конфиги гита для разных проектов (email контактный поменять, хотя бы, или хук на прогон тестов повесить).Ну и понятно, что как-то эти конфиги подкладывать туда-сюда – не слишком увлекательно. К счастью, в свежих версиях гита – есть инклюды. В том числе – по условию – includeIf. Вот ими и стоит воспользоваться.Основной конфиг gitОбщая концепция такова – в основном конфиге ~/.gitconfig – перечислить (под условиями) конфиги “зависимые”, а все специфичные настройки прописать уже в них. Ничего экстраординарного, в общем.Примерно вот так у меня это выглядит, по условию включается конфиг из файла gitconfig-project-1:[user] name = Dmitry email = dimio@dimio.org [includeIf "gitdir:~/project-1/repos/"] path = ~/.config/git/gitconfig-project-1Важный момент – директорию после gitdir: нужно указывать без отделения пробелом. Вложенный конфиг gitА вот так – выглядит сам файл ~/.config/git/gitconfig-project-1[user] email = dmitry@dimio.org [core] hooksPath = ~/.config/git/hooks/ autocrlf = input sshCommand = "ssh -F ${HOME}/.ssh/config-project-1"Тут уже как раз и переопределены email, хуки (для этого проекта активирован автопрогон тестов в pre-push хуке) и конфиг ssh (там специфические настройки для доступа к репозиторию по ключу).Разделение credentialsРаз уж зашла речь о разделении конфигов и о доступе – можно сразу настройки доступа по http(s) разбить немного.Включаются они так: git config --global credential.helper store. И после этого лежат в ~/.git-credentials в открытом виде!Разделить их для разных репозиториев внутри одного хоста – можно так (на примере github): git config --global credential.github.com.useHttpPath trueИ тогда в .git-credentials будут отдельные записи лежать:https://<USERNAME>:<PASSWORD>@github.com/path/to/repo1.git https://<USERNAME>:<PASSWORD>@github.com/path/to/repo2.gitНо, безусловно, удобней (да и безопасней, пожалуй) – пользоваться доступом с ssh ключами.Оригинал.#git