การใช้ GitHub หลายบัญชี

Ittipol Thirasat
2 min readFeb 14, 2021

วันนี้จะมาว่าด้วยเรื่องของการใช้ GitHub หลายบัญชีในเครื่องเดียว

หมายเหตุ — ทาง GitHub ไม่แนะนำให้คนนึงใช้หลายบัญชี และแนะนำว่าให้ใช้บัญชีเดียวกันทั้งส่วนตัวและทำงานนะครับ (อ้างอิง) ดังนั้นหากไม่ได้ติดข้อกำหนดหรือข้อจำกัดอะไรก็ใช้บัญชีเดียวไปเลย หรือหากเผลอสร้างบัญชีมาแล้วทาง GitHub ก็มีเครื่องมือช่วยรวมบัญชีเหล่านั้นเข้าด้วยกันให้

Git-cli ด้วย SSH key

เนื่องด้วยตัว Git for Windows รุ่นหลังๆ มีตัว GUI authen มาให้แล้ว หลายคนน่าจะใช้ login แบบนั้นกันไปเยอะแล้วเช่นกัน แต่ตัวนั้นไม่สามารถใช้หลายบัญชีได้นะครับ ตัวที่จะช่วยให้เราใช้หลายบัญชีได้กลับเป็น SSH key เดิมๆ นี่แหละ

เริ่มจากสร้าง SSH key ใหม่ขึ้นมาก่อน จากนั้นก็นำ key ที่ได้ไปวางไว้ในโฟลเดอร์ .ssh (ที่อยู่ใน home) ชื่อไฟล์จะเป็นอะไรก็ได้แต่แยกระหว่างบัญชีให้ดีป้องกันการสับสน จากนั้นก็เปิดไฟล์ config ที่อยู่ใน .ssh ขึ้นมา แก้หรือใส่เข้าไปใหม่ให้ได้หน้าตาตามนี้ครับ

.ssh/config

โดยตรง Host จะใช้ชื่ออะไรก็ได้ที่เราจำได้ และ IdentityFile นั้นก็เป็น path ไปยังไฟล์ key ที่เรานำไปวางไว้

จากนั้นเวลาเราจะ clone repository ให้เลือกเป็น SSH แล้ว copy URL มา

จากนั้นมาใช้คำสั่ง git clone แต่ต้องดัดแปลงเล็กน้อยนะครับ โดยเปลี่ยน Host ไปตามที่เราแก้ในไฟล์ config ไว้ เช่น

git clone git@{user-1}.github.com:user-1/repo.git

แล้วตัว git ก็จะเลือกใช้ SSH key ตามที่เราตั้งไว้เองครับ ทำแค่ตอน clone (หรือ add remote) เท่านั้น หลังจากนั้นใช้งานไปได้ตามปกติเลย

ช่องทางอื่นๆ

GitHub CLI

ไม่รองรับการใช้งานหลายบัญชี มีคนเสนอไว้ว่าน่าจะใช้ environment variable ช่วยได้แต่ก็ไม่สะดวกสักเท่าไหร่ (ผมไม่ได้ลองนะ) บางทีการ logout / login ใหม่รัวๆ อาจเป็นทางออก
logout command — gh auth logout

GitHub Desktop

ตัวนี้ออกตัวชัดเจนว่าไม่รองรับหลายบัญชี ก็ sign out / sign inใหม่รัวๆ ไปเช่นกัน
sign out — ctrl+, แล้ว sign out

GitHub for mobile

ในส่วนของ iOS ก็ logout / login ใหม่รัวๆ ไปนะครับ
ส่วนของ Android ผมใช้แอป Island ในการสร้าง work profile ของระบบ Android ขึ้นมาซึ่งจะถูกแยกข้อมูลกับแอปใน personal profile เกือบสมบูรณ์ ในนั้นก็ลง GitHub for mobile แยกต่างหากไปแล้วแยกใช้สองแอปสำหรับสองบัญชีครับ ถ้ามากกว่านั้นก็ logout / login ไปนะ

GitHub VS Code extension

ตัวนี้ไม่รองรับหลายบัญชีเช่นกัน ก็ sign out / sign in รัวๆ ไปครับ
sign out — ใน VS Code เปิด Command Palette… (กด ctrl + shift + P) พิมพ์ sign out github

GitKraken

ตัวนี้ถ้าใช้วิธีแยก SSH key ตามที่บอกไปข้างต้นก็เปิดมาใช้งานทั่วไปได้เลย แต่ที่ผมเจอว่าทำงานไม่ได้คือแค่ส่วนของ fetch กับ push ที่ต้องติดต่อ server ครับ

Visual Studio Code

ตัวนี้ไม่ต้องทำอะไรแค่แยก SSH file ไว้ให้เรียบร้อยก็ใช้งานได้เลย

--

--

Ittipol Thirasat

เจเนอรัลเบ๊ผู้เชื่อว่าโลกขับเคลื่อนด้วยความขี้เกียจของมนุษยชาติ