Magit เชื่อมต่อกับ github ด้วยปุ่ม ssh สำรอง
ฉันมีบัญชี github สองบัญชี - บัญชีส่วนบุคคลหนึ่งบัญชีสำหรับงานของฉัน ใน repos ส่วนใหญ่ของฉันฉันใช้บัญชีงานของฉันและ magit ก็ทำงานได้ดี ใน repos ส่วนตัวสองสามรายการฉันมีสิ่งนี้ใน.git/config
:
sshCommand = ssh -i /my/home/directory/.ssh/personal/id_rsa -F /dev/null
สิ่งนี้ใช้งานได้ดีจากบรรทัดคำสั่งสำหรับสิ่งต่างๆเช่นgit push
แต่เมื่อฉันพยายามผลักดันจาก magit ฉันได้รับข้อผิดพลาดนี้:
ERROR: Permission to <personalaccount>/unified_docs_switcher.git denied to <workaccount>.
เนื่องจากบัญชีการทำงานของฉันถูกกล่าวถึงในข้อผิดพลาดก็ดูเหมือนว่าการเชื่อมต่อ magit .git/config
ที่จะคอมไพล์ละเลยเส้นใน
มีการกำหนดค่าอื่น ๆ ที่ฉันสามารถเพิ่มลงใน magit เพื่อรับรู้สิ่งนี้ได้หรือไม่?
มีวิธีแก้ไขที่แตกต่าง / ดีกว่าในการใช้บัญชี github อื่นหรือไม่?
(แก้ไข: emacs 27.1 บน MacOS จากที่นี่ทดสอบกับ magit 2.90.1 จาก melpa-stable แล้ว 20210105.1030 จาก melpa)
คำตอบ
มีโซลูชัน Git ที่บริสุทธิ์ที่คุณสามารถใช้ได้ในทั่วโลก.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]
ใน global ของ.gitconfig
ฉันฉันมีการกำหนดค่าincludeIf.path
งานที่จะใช้หาก repo ตรงกับรูปแบบที่ให้ไว้เป็นอาร์กิวเมนต์กับincludeIf
:
# .gitconfig
# When working with Work
[includeIf "gitdir:**/work/**/.git"]
path = .gitconfig-work
และไฟล์นั้นมีชื่ออีเมลที่ทำงานและรหัสคีย์ GPG ของอีเมลที่ทำงาน:
# .gitconfig-work
[user]
name = jidicula
email = "[email protected]"
signingkey = "<workKeyID>"
ทุกสิ่งในการกำหนดค่าที่สองนี้จะเขียนทับสิ่งที่กำหนดโดยค่าเริ่มต้น - จับคู่กับเงื่อนไขincludeIf
เราจะได้รับการกำหนดค่าGit ที่ขึ้นอยู่กับเส้นทาง
เมื่อรวมโลก.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
ตามบริบทของคุณเช่นอีเมลคีย์ชื่อผู้ใช้พฤติกรรมดึงส่งเทมเพลตข้อความ ฯลฯ
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเงื่อนไขรวมถึงที่นี่