Git использует неправильную идентификацию (файл .ssh / config не читается?)

Я использую gitlab.com для работы в компании и github.com для личной работы. Я прочитал много обсуждений, много тем о проблеме с идентификацией, но до сих пор не могу понять, почему у меня это не работает.

У меня есть ~/.ssh/config файл, как показано ниже

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/perso_id_rsa

Host gitlab
  HostName gitlab.com
  User git
  IdentityFile ~/.ssh/id_rsa

И мастер ~/.gitconfig

[user]
    email = my_company_address
    name = my_company_name

[includeIf "gitdir:~/Workspace/perso"]
    path = ~/Workspace/perso/.gitconfig

И ~/Workspace/perso/.gitconfig

[user]
    email = my_perso_email
    name = my_pseudo

Когда я делаю коммиты из своего персо-проекта в ~ / Workspace / perso / my_perso_project, автором коммита является адрес моей компании (фиксация отправляется в github без проблем).

Кто-нибудь может помочь?

Спасибо


person ValLeNain    schedule 21.03.2020    source источник
comment
.ssh материал совершенно не имеет отношения к созданию новых коммитов. user.name и т. Д. Совершенно не имеют отношения к выполнению операций ssh ​​push / fetch. Директива includeIf требует современного Git; какую версию Git вы используете?   -  person torek    schedule 21.03.2020
comment
Я использую git 2.17.1   -  person ValLeNain    schedule 21.03.2020


Ответы (2)


Ваш includeif неверен. gitdir:~/Workspace/perso не является директорией .git и не имеет флага поиска. См. git config документы для включения, если,

Если шаблон заканчивается на /, автоматически добавляется **. Например, образец foo / становится foo/**. Другими словами, он рекурсивно сопоставляет "foo" и все, что находится внутри.

Либо назовите конкретный каталог git, который вы проверяете, либо скажите Git, что вы имеете в виду любой каталог git во всем поддереве:

[includeIf "gitdir:~/Workspace/perso/.git"]
        path = ~/Workspace/perso/.gitconfig

or

[includeIf "gitdir:~/Workspace/perso/**"]
        path = ~/Workspace/perso/.gitconfig

or

[includeIf "gitdir:~/Workspace/perso/"]
        path = ~/Workspace/perso/.gitconfig
person jthill    schedule 21.03.2020

IncludeIf действительно поддерживается Git 2.17.1 (он был представлен в 2.13)

Как уже говорилось, ~/.ssh/config используется только для аутентификации, а не для авторства.

Я бы пошел в ~ / Workspace / perso / my_perso_projec и сделал:

git config --list --show-origin

Таким образом, вы знаете, в каком файле будет установлен user.email.
Последний отображаемый имеет приоритет над другими.

person VonC    schedule 21.03.2020