मैथ को वैकल्पिक ssh कुंजी के साथ github से जोड़ना
मेरे पास दो गीथूब खाते हैं - एक व्यक्तिगत और एक मेरी नौकरी के लिए। मेरे अधिकांश रिपोज में, मैं अपने कार्य खाते का उपयोग करता हूं और मैगिट ठीक काम करता है। एक जोड़े के व्यक्तिगत प्रतिनिधि में, मेरे पास यह है .git/config
:
sshCommand = ssh -i /my/home/directory/.ssh/personal/id_rsa -F /dev/null
यह कमांड लाइन से चीजों के लिए अच्छी तरह से काम करता है git push
, लेकिन जब मैं मैजिट से पुश करने की कोशिश करता हूं, तो मुझे यह त्रुटि मिलती है:
ERROR: Permission to <personalaccount>/unified_docs_switcher.git denied to <workaccount>.
चूँकि मेरा कार्य खाता त्रुटि संदेश में उल्लिखित है, ऐसा लगता है जैसे मैगिट का कनेक्शन git में लाइन को अनदेखा कर रहा है .git/config
।
क्या मुझे पहचानने के लिए कुछ और कॉन्फिग्रेशन हैं जिन्हें मैं मैगिट में जोड़ सकता हूं?
क्या अलग-अलग गीथूब खातों का उपयोग करने के लिए मैगिट में एक अलग / बेहतर समाधान है?
(संपादित करें: यहां से MacOS पर 27.1 emacs , मेग्पा-स्थिर से मैजिट 2.90.1 पर परीक्षण किया गया और फिर melpa से 20210105.1030)
जवाब
एक शुद्ध गिट समाधान है जिसे आप अपने वैश्विक में उपयोग कर सकते हैं .gitconfig
- मैं include.path
डिफ़ॉल्ट रूप से व्यक्तिगत सामान के लिए एक विन्यास का उपयोग करता हूं :
# .gitconfig
# default user email and key
[include]
path = .gitconfig-personal
और उस फ़ाइल में नाम, व्यक्तिगत ईमेल (जो SSH के लिए प्रयोग किया जाता है और मेरे GitHub खाते की पहचान करता है), और GPG कुंजी आईडी शामिल है:
# .gitconfig-personal
[user]
name = jidicula
email = "[email protected]"
signingkey = "<personalKeyID>"
उसके बाद, [include]
मेरे वैश्विक क्षेत्र में पहले .gitconfig
, मेरे पास एक includeIf.path
कार्य-विन्यास है जिसका उपयोग करने के लिए कि रेपो एक तर्क के रूप में दिए गए पैटर्न से मेल खाता है includeIf
:
# .gitconfig
# When working with Work
[includeIf "gitdir:**/work/**/.git"]
path = .gitconfig-work
और उस फ़ाइल में नाम, कार्य ईमेल और कार्य ईमेल GPG कुंजी ID शामिल है:
# .gitconfig-work
[user]
name = jidicula
email = "[email protected]"
signingkey = "<workKeyID>"
इस दूसरे कॉन्फ़िगरेशन में कुछ भी डिफ़ॉल्ट रूप से परिभाषित किया गया था जो अधिलेखित होगा - सशर्त के साथ जोड़ा गया includeIf
, हमें पथ-निर्भर Git config मिलता है।
वैश्विक लाना .gitconfig
सब एक साथ, हम पाते हैं:
# .gitconfig
# default user email and key
[include]
path = .gitconfig-personal
# When working with Work
[includeIf "gitdir:**/work/**/.git"]
path = .gitconfig-work
तो फिर तुम भर देंगे .gitconfig-personal
और gitconfig-work
ईमेल, कुंजी, उपयोगकर्ता नाम, पुल व्यवहार, की तरह अपने संदर्भ विशेष कॉन्फ़िगरेशन संदेश टेम्पलेट्स, आदि के लिए प्रतिबद्ध के साथ
आप यहाँ सशर्त शामिल के बारे में अधिक पढ़ सकते हैं ।