3 คะแนน โดย GN⁺ 2024-11-26 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

วิธีตั้งค่าอัตลักษณ์ Git ของฉัน

  • บทนำ: บทความนี้อธิบายวิธีจัดการอัตลักษณ์ให้เหมาะกับสภาพแวดล้อมการทำงานผ่านการตั้งค่า Git ผู้เขียนค้นพบวิธีใช้ includeIf เพื่อรวมไฟล์ตามเงื่อนไขที่กำหนด

  • การตั้งค่า Git:

    • สามารถใช้ includeIf เพื่อรวมไฟล์ตั้งค่า Git คนละไฟล์ตามไดเรกทอรีที่กำหนดได้
    • ตัวอย่างเช่น สามารถตั้งค่าให้ไดเรกทอรี Git ใต้ ~/code รวม ~/.config/git/personal และใต้ ~/work รวม ~/.config/git/work
    • ในแต่ละไฟล์จะมีข้อมูลอย่างชื่อผู้ใช้ อีเมล คีย์สำหรับลงนาม เป็นต้น
  • การตั้งค่าตาม Remote URL:

    • สามารถใช้ hasconfig:remote.*.url เพื่อกำหนดค่า Git แบบมีเงื่อนไขเมื่อมี remote URL เฉพาะอยู่
    • ตัวอย่างเช่น ในไดเรกทอรีที่มี remote อย่าง github.com:orgname/** สามารถตั้งค่าให้ใช้ ~/.config/git/config-gh-org
  • การตั้งค่า SSH key:

    • ควรตั้งค่า SSH key เพื่อให้สามารถ pull และ push ไปยัง remote ได้
    • ในไฟล์ ~/.ssh/config สามารถตั้งค่า Host และ IdentityFile เพื่อใช้ SSH key ที่เหมาะกับแต่ละ remote
    • หากต้องการใช้ IdentityFile คนละตัวกับ Hostname เดียวกัน ต้องตั้งค่า Host ให้แตกต่างกัน
  • การใช้การตั้งค่า SSH ใน Git config:

    • หากต้องการใช้การตั้งค่า SSH ที่ต่างกันสำหรับบางรีโพซิทอรี สามารถใช้ insteadOf ใน Git config เพื่อแทนที่ URL ได้
    • ตัวอย่างเช่น สามารถใช้ gh-work:orgname แทน github.com:orgname เพื่อให้มีการใช้การตั้งค่า SSH ที่ถูกต้อง
  • ข้อพิจารณา:

    • ผู้เขียนมองว่าแนวทางนี้อาจมีปัญหาอยู่บ้าง และอยากได้ความคิดเห็นว่ามีวิธีที่ดีกว่านี้หรือไม่

แหล่งอ้างอิง

  • ผู้เขียนอ้างอิงบทความบล็อกหลายชิ้นเกี่ยวกับวิธีจัดการอัตลักษณ์ Git หลายแบบ

1 ความคิดเห็น

 
GN⁺ 2024-11-26
ความคิดเห็นจาก Hacker News
  • อธิบายวิธีแยกตัวตน SSH และ Git โดยใช้ชื่อ gh-work โดยที่ Git repository ทั้งหมดที่โคลนด้วย gh-work จะใช้การตั้งค่าจาก gh-work.inc และใช้คีย์ลงนามเดียวกับการตั้งค่า SSH

  • มีเรื่องเล่าว่าตอนทำงานที่สตาร์ทอัพแห่งหนึ่ง มีเพื่อนร่วมงานคนหนึ่งเปลี่ยนตัวตนทุกวันเป็นชื่อแนวเทพนิยาย แม้จะไม่ช่วยด้านนิติวิทยาศาสตร์ของระบบควบคุมเวอร์ชันนัก แต่อาจเป็นการเตือนว่าคุณสามารถใส่อะไรก็ได้ลงไปในการตั้งค่าตัวตน

  • เสนอวิธีเพิ่มนามแฝงสำหรับตัวตนไว้ใน .gitconfig เพื่อให้หลังจากเริ่มต้น repository หรือโคลนแล้ว สามารถรันคำสั่ง git config-company หรือ git config-personal ได้

  • อธิบายวิธีจัดการ submodule ได้ง่ายโดยไม่ต้องแก้ ~/.ssh/config ด้วยการตั้งค่าคำสั่ง SSH ไว้ใน ~/.gitconfig

  • แนะนำวิธีจัดการการตั้งค่า Git แยกตามไดเรกทอรีด้วย includeIf และ hasconfig:remote ซึ่งมีประโยชน์ตอนโคลน repository ด้วย

  • แนะนำอย่างยิ่งว่าสำหรับที่ปรึกษา ควรใช้อุปกรณ์แยกสำหรับงาน หรืออย่างน้อยก็ใช้ผู้ใช้ OS แยกต่างหาก การใช้อุปกรณ์ส่วนตัวทำงานอาจมีความเสี่ยง

  • อธิบายวิธีจัดการการตั้งค่า Git ด้วย NixOS และ home-manager โดยใช้เงื่อนไข hasconfig:remote เพื่อตั้งค่าอีเมลเฉพาะ

  • อธิบายวิธีคงความซับซ้อนของ SSH ไว้ใน ~/.ssh และแยก include config ตามลูกค้าหรือโปรเจกต์ โดยกำหนด alias ให้เมื่อไม่มีชื่อโฮสต์อย่าง GitHub

  • อธิบายวิธีแยกงานกับงานส่วนตัวด้วย gitdir และชี้ว่า hasconfig:remote เป็นตัวเปลี่ยนเกม

  • อธิบายวิธีแยกจัดการ repository งานและส่วนตัวไว้ที่ ~/dev และ ~/src โดย include ไฟล์ตั้งค่า Git คนละชุดตามพาธ

  • อธิบายวิธีตั้งค่าไฟล์ .gitconfig สำหรับงานส่วนตัวและงานบริษัทให้ใช้อีเมลและคีย์ลงนามต่างกัน พร้อมเปิดใช้การลงนามด้วย GPG สำหรับ commit