Использовать user.email текущего репо для коммитов в VS Code - PullRequest
2 голосов
/ 13 марта 2019

Я использую Git с двумя разными электронными адресами / профилями, в результате чего:

git config user.email >> myRepoEmail@address.com
git config --global user.email >> myGenericEmail@address.com

Если я использую VS Code и открываю терминал, мои коммиты используют адрес электронной почты репо;это имеет смысл, потому что я эффективно использую Git (не VSCode).Однако, если я использую боковую панель Git Source Control и набираю сообщение о коммите, Ctrl+Enter для фиксации и т. Д., Тогда он фиксируется с использованием глобальной электронной почты (myGenericEmail@address.com), даже если я работаю в репо с другимнастроить.

Есть ли способ указать VS Code использовать настройки репо для фиксации, вместо того, чтобы вызывать --global для фиксации?

[ РЕДАКТИРОВАТЬ в информации из комментариев ]
Полагаю, мне следует упомянуть, что в моем gitconfig есть команда

[includeIf "gitdir:C:/Users/myname/privateRepoFolder"] 
    path = ~/gitconfig-private 

, а в этом альтернативном gitconfig-private у меня есть

[user] 
    email = myRepoEmail@address.com

Ответы [ 2 ]

2 голосов
/ 19 марта 2019

У меня наконец-то появилась возможность проверить Windows.

Из ваших комментариев:

Полагаю, мне следует упомянуть, что в моем gitconfig есть команда [includeIf "gitdir:C:/Users/myname/privateRepoFolder"] path =~/gitconfig-private, и в этом альтернативном gitconfig-private у меня есть [user] email = myRepoEmail@address.com.

В Windows условное включение includeIf немного относится к пути.

Сначала , убедитесь, что в конце пути указан /, чтобы указать каталог, как в их примере:

; include for all repositories inside /path/to/group
[includeIf "gitdir:/path/to/group/"]
    path = /path/to/foo.inc

Так что вы должны использовать:

[includeIf "gitdir:C:/Users/myname/privateRepoFolder/"] 
    path = ~/gitconfig-private

Я обнаружил, что он также работает, заканчивая путь файлом .git (чтобы быть более явным).

[includeIf "gitdir:C:/Users/myname/privateRepoFolder/.git"] 
    path = ~/gitconfig-private

Секунда , для VSCode, это работает, только если вы используете сопоставление без учета регистра (gitdir/i):

[includeIf "gitdir/i:C:/Users/myname/privateRepoFolder/"] 
    path = ~/gitconfig-private

Такое поведение без учета регистра является известным поведением VSCode.
См. Сообщаемую проблему. Интеграция с Git неправильно поддерживает директиву includeIf :

Я попытался выполнить коммит из VSCode, чтоя забрал конфиг includeIf.Затем я запустил упаковщик из командной строки, и он поднял includeIf.Затем я проверил журнал:

В VSCode:

config --get-all user.name in c:\Users\zhuowei\Documents\repos\includeIf

Снаружи:

config --get-all user.name in C:\Users\zhuowei\Documents\repos\includeIf

Обратите внимание на разницув письме дела.

1 голос
/ 13 марта 2019

При использовании Git 2.8 или более я бы порекомендовал:

git config --global user.useConfigOnly true

И затем запустить VSCode.
Таким образом, VSCode не сможет по умолчанию использовать универсальную электронную почту, если,по любой причине он не находит ваш user.name / user.email, настроенный в каком-либо локальном репо: он имеет , чтобы спросить вас, кто вы в этом репо.

...