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.pathkiş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 .gitconfigbir 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, includeIfyola bağlı Git yapılandırması elde ederiz.
Küresel olanı bir .gitconfigaraya 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-personalve gitconfig-worke-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 .