จัดการ Git หลาย Account ในเครื่องเดียว
01 Oct 2023 16:00
Written by: Yosapol Jitrak
ปัจจุบันการใช้งาน Git เป็น Version control ถือว่าเป็นเรื่องปกติของการทำ Software เป็นที่เรียบร้อยแล้ว หลายคนใช้คอมพิวเตอร์เครื่องเดียวทำทุกอย่าง ทั้งงานที่บริษัท และใช้งานส่วนตัว ซึ่งการใช้งาน Git อาจจะมีทั้ง Account ของบริษัท และ Account ส่วนตัวที่ทำ Project ส่วนตัว รวมถึงอาจจะเอาไว้ช่วย Contribute Open source project ต่าง ๆ ยิ่งข่วงนี้เป็นเทสกาล Hacktoberfest ซึ่งปีนี้จัดเป็นปีที่ 10 แล้ว จึงอยากจะแนะนำวิธีการจัดการ Git หลาย Account ในเครื่องเดียวกัน ซึ่งจะมีหลายวิธี
Managing multiple accounts ซึ่งดูวิธีการแล้วดูไม่ตอบโจทย์เท่าไหร่ โดยเฉพาะการแยก Protocal สำหรับแต่ละ Account อันนึงใช้ HTTPS อันนึงใช้ SSH ยุคนี้แล้วยังไงก็ควรใช้ SSH แทน HTTPS แล้ว
Multiple GitHub accounts on the same computer? วิธีนี้เป็นวิธีดั้งเดิมที่ใช้กันมานานแล้ว แต่วิธีนี้จะมีข้อเสียคือต้องมาคอยแก้ชื่อ Host ตอน Clone หรือ Set origin ซึ่งผมจะไม่กล่าวถึงในบทความนี้เช่นกัน เพราะมีวิธีที่ดีกว่านั้น
8 Easy Steps to Set Up Multiple GitHub Accounts [cheat sheet included] วิธีนี้ดูเป็นวิธีที่น่าจะโอเคที่สุดของผมตอนนี้แล้วครับ เรามาดูวิธีการกันครับ
# SSH key สำหรับ Git account ส่วนตัว
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_personal
# SSH key สำหรับ Git account ทำงาน
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_work
# Copy public key
cat ~/.ssh/id_ed25519_personal.pub | pbcopy
เข้าไปที่ GitHub > Settings > SSH and GPG keys > New SSH key แล้วใส่ชื่อ Key และ Public key ที่ Copy ไว้ และทำแบบเดียวกันกับ Work account
### สร้าง File สำหรับ Git account ส่วนตัว
touch ~/.git-personal
### สร้าง File สำหรับ Git account ทำงาน
touch ~/.git-work
ตัวอย่างเนื้อหาของไฟล์ .git-personal
[user]
email = [email protected]
name = Yosapol Jitrak
[github]
user = "Eji4h"
[core]
sshCommand = "ssh -i ~/.ssh/id_ed25519_personal"
ทำอย่างเดียวกันกับ .git-work แต่เปลี่ยน Setting เป็นของ Work account
touch ~/.gitconfig
เสร็จแล้วเปิดไฟล์ .gitconfig ขึ้นมาแล้วใส่ Config ตามนี้
[includeIf "gitdir:~/"] # include for all .git projects under personal/
path = ~/.git-personal
[includeIf "gitdir:~/works/"] # include for all .git projects under work/
path = ~/.git-work
เงื่อนไขวิธีนี้คือเราจะต้องอยู่ให้ถูก Working directory ตามเงื่อนไข includeIf จะดึง Config จาก Path มา Override ทับ เพื่อจัดการกับ Git account ที่เราต้องการ และเมื่อเราอยู่ใน Working directory แล้วเราสามารถใช้คำสั่ง Git ได้ปกติเลยครับ ไม่ต้องคอยแก้ไขชื่อ Host หรืออะไรทั้งนั้น
จบไปแล้วครับสำหรับบทความนี้ หวังว่าจะเป็นกับคนที่ใช้คอมพิวเตอร์เครื่องเดียว แต่่จะต้องจัดการกับ Git account หลาย ๆ Acount วิธีการนี้สามารถใช้ได้กับผู้ให้บริการ Git เจ้าอื่นด้วยนะครับ ไม่จำเป็นจะต้องเป็น GitHub เพียงอย่างเดียวนะครับ