Magit, alternatif ssh anahtarıyla github'a bağlanıyor
İki github hesabım var - biri kişisel, diğeri işim için. Depolarımın çoğunda iş hesabımı kullanıyorum ve magit iyi çalışıyor. Birkaç kişisel depoda, bu var .git/config
:
sshCommand = ssh -i /my/home/directory/.ssh/personal/id_rsa -F /dev/null
Bu, komut satırından iyi çalışır git push
, ancak magit'ten itmeye çalıştığımda şu hatayı alıyorum:
ERROR: Permission to <personalaccount>/unified_docs_switcher.git denied to <workaccount>.
Hata mesajında iş hesabımdan bahsedildiği için, magit'in git ile bağlantısı, girişi görmezden geliyor gibi görünüyor .git/config
.
Bunu tanımak için magit'e ekleyebileceğim başka bir yapılandırma var mı?
Magit'te farklı github hesaplarını kullanmak için farklı / daha iyi bir çözüm var mı?
(Düzenleme: buradan MacOS üzerinde emacs 27.1, melpa-stabil'den magit 2.90.1 ve ardından melpa'dan 20210105.1030 üzerinde test edilmiştir)
Yanıtlar
Global'inizde kullanabileceğiniz saf bir Git çözümü var .gitconfig
- include.path
kişisel öğeler için varsayılan olarak bir yapılandırma kullanıyorum :
# .gitconfig
# default user email and key
[include]
path = .gitconfig-personal
ve bu dosya adı, kişisel e-postayı (SSH için ve GitHub hesabımı tanımlamak için kullanılır) ve GPG anahtar kimliğini içerir:
# .gitconfig-personal
[user]
name = jidicula
email = "[email protected]"
signingkey = "<personalKeyID>"
Ardından, [include]
globalde ilk önce , repo bir argüman olarak sağlanan bir modelle eşleşirse kullanacağım .gitconfig
bir includeIf.path
çalışma yapılandırmam var includeIf
:
# .gitconfig
# When working with Work
[includeIf "gitdir:**/work/**/.git"]
path = .gitconfig-work
ve bu dosya adı, iş e-postasını ve iş e-postası GPG anahtar kimliğini içerir:
# .gitconfig-work
[user]
name = jidicula
email = "[email protected]"
signingkey = "<workKeyID>"
Bu ikinci yapılandırmadaki herhangi bir şey, varsayılan olarak tanımlananın üzerine yazacaktır - koşullu ile birlikte, includeIf
yola bağlı Git yapılandırması elde ederiz.
Küresel olanı bir .gitconfig
araya getirerek şunları elde ederiz:
# .gitconfig
# default user email and key
[include]
path = .gitconfig-personal
# When working with Work
[includeIf "gitdir:**/work/**/.git"]
path = .gitconfig-work
Sonra doldururlardı .gitconfig-personal
ve gitconfig-work
e-postalar, anahtarlar, kullanıcı adları, çekme davranışı, gibi bağlama özgü yapılandırmaları mesaj şablonları vb taahhüt ile
Koşullu içerir yaklaşık Daha okuyabilirsiniz burada .