จัดการหลายโปรเจกต์ด้วย Git ตัวเดียว: แยกบัญชีและคีย์ SSH
เรียนรู้วิธีจัดการโปรเจกต์ฟรีแลนซ์หลายรายบนคอมพิวเตอร์เครื่องเดียวด้วยฟีเจอร์ includeIf ของ Git และการตั้งค่า SSH แยกตามโฟลเดอร์

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- ใช้ฟีเจอร์ includeIf ใน Git เพื่อสลับอีเมลและข้อมูลประจำตัวตามโฟลเดอร์ที่ทำงานอัตโนมัติ
- สร้าง SSH Key แยกเฉพาะสำหรับแต่ละลูกค้าเพื่อป้องกันความผิดพลาดในการยืนยันตัวตนกับ GitHub หรือ GitLab
- จัดการตัวแปรสภาพแวดล้อมและไฟล์ .env ให้ปลอดภัยด้วยเครื่องมือจัดการอย่าง direnv
- ตั้งค่า .gitignore_global และ pre-commit hook เพื่อป้องกันการเผลอหลุดรอดของ API Key
การรับงานฟรีแลนซ์พร้อมกันหลายรายมักทำให้การใช้งาน Git กลายเป็นเรื่องยุ่งยากในเวลาอันรวดเร็ว ลูกค้าแต่ละรายต่างก็ต้องการข้อมูลประจำตัวที่แตกต่างกัน เช่น อีเมลของเอเจนซี่ บัญชีองค์กรบน GitHub หรือการใช้งานผ่าน GitLab แยกจากโปรเจกต์ส่วนตัวที่ใช้อีเมลส่วนตัว ความผิดพลาดเพียงเล็กน้อย เช่น การเผลอคอมมิตด้วยอีเมลผิดบัญชี หรือการใช้ SSH Key ผิดตัวจนขึ้นข้อความแจ้งเตือนสิทธิ์ปฏิเสธ (Permission denied) อาจเกิดขึ้นได้ง่ายและดูไม่เป็นมืออาชีพ
เพื่อแก้ปัญหานี้ นักพัฒนาซอฟต์แวร์ Abid Ali ได้แนะนำแนวทางการจัดระเบียบเครื่องคอมพิวเตอร์เครื่องเดียวให้สามารถทำงานร่วมกับลูกค้าหลายรายได้อย่างราบรื่น โดยใช้เวลาตั้งค่าประมาณ 20 นาทีเท่านั้น ระบบทั้งหมดจะขึ้นอยู่กับการจัดโครงสร้างไดเรกทอรีที่ชัดเจน เช่น การแยกโฟลเดอร์งานออกเป็นหมวดหมู่ลูกค้าแต่ละรายอย่างเป็นระเบียบ

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
Git มีความสามารถในการกำหนดค่าตามตำแหน่งที่ตั้งของที่เก็บโค้ด (Repository) บนดิสก์ได้ด้วยคำสั่ง includeIf "gitdir:..." ในขณะที่ SSH สามารถเลือกใช้งานคีย์ที่ถูกต้องตามโฮสต์แอลียส (Host alias) ได้ เมื่อนำทั้งสองอย่างมารวมกัน โฟลเดอร์ที่คุณใช้งานอยู่จึงกลายเป็นตัวกำหนดข้อมูลประจำตัวโดยอัตโนมัติ
ไฟล์การตั้งค่าหลักทั่วโลก (Global config) จะทำหน้าที่เก็บค่าเริ่มต้นพร้อมทั้งเพิ่มการอ้างอิงไฟล์แยกตามลูกค้ารายบุคคล ตัวอย่างเช่น:
- กำหนดค่า
[user]หลักสำหรับอีเมลส่วนตัว - เพิ่มคำสั่ง
[includeIf]เพื่อดึงไฟล์ตั้งค่าเฉพาะเมื่ออยู่ในโฟลเดอร์ของลูกค้านั้นๆ - ทดสอบความถูกต้องภายในโฟลเดอร์รีพอทอรีของลูกค้าด้วยคำสั่ง
git config user.emailและตรวจสอบแหล่งที่มาด้วย--show-origin
การใช้ฟีเจอร์ includeIf และการแยก SSH Key ทีละลูกค้านอกจากจะช่วยลดความผิดพลาดในการส่งโค้ดแล้ว ยังเป็นแนวปฏิบัติที่ดีด้านความปลอดภัย (Security Best Practice) สำหรับฟรีแลนซ์และเอเจนซี่ที่ต้องสลับสภาพแวดล้อมการทำงานบ่อยครั้ง ช่วยป้องกันไม่ให้โทเค็นหรือสิทธิ์การเข้าถึงระบบของลูกค้ารายหนึ่งรั่วไหลไปยังโปรเจกต์ของอีกรายโดยไม่ได้ตั้งใจ
ในส่วนของการจัดการ SSH Key นั้น เนื่องจาก GitHub ใช้คีย์ในการระบุตัวตนของคุณ หากลูกค้าสร้างบัญชี GitHub แยกต่างหากให้ คุณจึงจำเป็นต้องสร้างคีย์ SSH เฉพาะสำหรับลูกค้ารายนั้นๆ ด้วยคำสั่ง ssh-keygen -t ed25519 พร้อมตั้งรหัสผ่าน (Passphrase) แล้วนำ Public Key (.pub) ไปใส่ไว้ในบัญชีที่เกี่ยวข้อง
ทางเลือกในการทำให้ Git เลือกใช้คีย์ที่ถูกต้องมีอยู่ 2 วิธีหลัก ได้แก่ การใช้ core.sshCommand ในค่าคอนฟิกของลูกค้า หรือการตั้งค่า Host alias ในไฟล์ ~/.ssh/config ซึ่งวิธีหลังจะมีความชัดเจนและใช้งานนอกเหนือจาก Git ได้ด้วย นอกจากนี้ยังต้องระวังการจัดการตัวแปรสภาพแวดล้อมและ API Key โดยการใช้งานไฟล์ .env ร่วมกับเครื่องมืออย่าง direnv รวมถึงการติดตั้ง pre-commit hook เพื่อสแกนหาความลับก่อนทำการพุชโค้ดทุกครั้ง
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น