ปกติแล้ว Github แนะนำให้ใช้แอคเคาท์เดียวสำหรับทั้งเรื่องงานและเรื่องส่วนตัว แต่สำหรับบางกรณีที่ต้องใช้มากกว่า 1 แอคเคาท์ เช่นมีการใช้ dotfiles ร่วมกัน หรือใช้ Github สำหรับจดบันทึกส่วนตัว (เช่นใช้ Obsidian) ถ้าเป็นเมื่อก่อนอาจจะยอมใช้ HTTP Protocol แล้วใส่พาสเวิร์ดเอาแทนได้ แต่พอ Github เลิกรองรับการใช้งานพาสเวิร์ดก็เลยต้องมาออกแรงมากขึ้นหน่อยด้วยการเซต SSH config เพิ่ม
สมมติว่าเรามีแอคเคาท์ชื่อ my-personal-account
กับ my-work-account
-
ให้สร้าง ssh public/private key pairs ของทั้งสอง เซฟในชื่อที่ต่างกัน เช่น
my-personal-account กับ my-personal-account.pub
และmy-work-account กับ my-work-account.pub
-
เลือกว่าจะให้แอคเคาท์ไหนจะให้เป็นแอคเคาท์หลัก กรณีนี้สมมติว่าให้
my-personal-account
เป็นแอคเคาท์หลัก -
ในไฟล์
~/.ssh/config
ให้กำหนดค่าแบบนี้Host github.com HostName github.com User git AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/my-personal-account Host github.com-work HostName github.com User git AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/my-work-account
-
สำหรับแอคเคาท์หลักก็ใช้คำสั่งตามปกติ แต่เวลาเราจะใช้งาน repo ที่เป็นของแอคเคาท์ทำงานก็ใช้วิธี git clone ด้วยการเติม
-work
เข้าไปท้ายgithub.com
แบบคำสั่งข้างล่างนี้แทน โดยที่ตรง(your repo)
นี่ก็ใส่เป็นชื่อ repo ที่ต้องการgit clone [email protected]:(your repo)
เช่น
git clone [email protected]:my-work-accont/myrepo.git
-
คำสั่งอื่นๆ ก็ใช้งานตามปกติ
ข้อควรระวัง
ถึงแม้ว่าเราจะโคลนตัว repo มาได้แต่ว่าเวลาเรา commit code มันอาจจะเป็นชื่อและอีเมลที่เราใช้กับแอคเคาท์อื่นก็ได้ ดังนั้นคนที่กลัวว่าชื่อ/อีเมลจะปนกันก็ควรจะ ต้องตรวจสอบ .git/config ทุกครั้งหลังจาก clone ว่าตั้งค่า git.user และ git.email ถูกต้อง