Documentation
กลับไปหมวดหมู่

Git Version Control

เวลาอ่านโดยประมาณ: ~15 นาที

Git Version Control

Git เป็นระบบควบคุมเวอร์ชัน (Version Control System) ที่ช่วยให้นักพัฒนาสามารถติดตามการเปลี่ยนแปลงของโค้ด ทำงานร่วมกันเป็นทีม และจัดการประวัติการพัฒนาได้อย่างมีประสิทธิภาพ

ทำไมต้องใช้ Git?

  • ติดตามการเปลี่ยนแปลง: บันทึกทุกการแก้ไข พร้อมประวัติและเหตุผล
  • ทำงานร่วมกัน: หลายคนทำงานบนโค้ดเดียวกันได้พร้อมกัน
  • ย้อนกลับได้: กู้คืนโค้ดเวอร์ชันเก่าได้ทุกเมื่อ
  • แยกงาน: สร้าง branch เพื่อพัฒนาฟีเจอร์แยกจากโค้ดหลัก

การติดตั้ง Git

Windows

ดาวน์โหลดและติดตั้งจาก https://git-scm.com/

macOS

Linux

ตรวจสอบการติดตั้ง

Naming Conventions

การตั้งชื่อในโปรเจกต์ซอฟต์แวร์มีหลายรูปแบบ ขึ้นอยู่กับภาษาและบริบท:

รูปแบบตัวอย่างใช้กับ
snake_caselearn_dev_basicPython, database fields
camelCaselearnDevBasicJavaScript, Java variables
PascalCaseLearnDevBasicClass names ในหลายภาษา
kebab-caselearn-dev-basicURLs, CSS class names, Git repos

การตั้งค่า Git ครั้งแรก

การตั้งค่า SSH Keys สำหรับ GitHub

1. ตรวจสอบ SSH Keys ที่มีอยู่

2. สร้าง SSH Key ใหม่

กด Enter เพื่อใช้ตำแหน่งเริ่มต้น และตั้ง passphrase (หรือข้ามได้)

3. แสดง Public Key

4. เพิ่ม SSH Key ใน GitHub

  1. ไปที่ https://github.com/settings/keys
  2. คลิก "New SSH key"
  3. วาง public key ที่ copy มา
  4. คลิก "Add SSH key"

5. ทดสอบการเชื่อมต่อ

ถ้าสำเร็จจะเห็นข้อความ: Hi username! You've successfully authenticated...

คำสั่ง Git พื้นฐาน

เริ่มต้นโปรเจกต์

การ Clone Repository

การ Commit

Commit Message Best Practices

รูปแบบที่ดี:

  • feat: เพิ่มฟีเจอร์ login
  • fix: แก้ไขปุ่ม submit ไม่ทำงาน
  • docs: อัปเดต README
  • refactor: ปรับโครงสร้างฟังก์ชัน auth
  • test: เพิ่ม unit tests สำหรับ API

หลักการเขียน:

  • เริ่มด้วย verb (กริยา): add, fix, update, remove
  • สั้นกระชับ แต่อธิบายได้ชัด (50 ตัวอักษร)
  • ใช้ present tense: "add feature" ไม่ใช่ "added feature"

การทำงานกับ Remote

Branch Management

การสร้างและเปลี่ยน Branch

เปลี่ยนชื่อ Branch

Fetch และ Pull

Merge และ Pull Request

การ Merge ผ่าน GitHub

  1. ไปที่ Pull Requests ใน GitHub repository
  2. คลิก "New pull request"
  3. เลือก base branch (เช่น main) และ compare branch (เช่น dev-feature)
  4. กดปุ่ม "Create pull request"
  5. เขียน description อธิบายการเปลี่ยนแปลง
  6. รอ code review แล้วกด "Merge pull request"

การ Merge ผ่าน Command Line

Conflict Resolution

เมื่อเกิด conflict (ความขัดแย้ง) ระหว่างการ merge:

ขั้นตอนการแก้ไข

  1. Pull branch ที่ต้องการ merge มา
  1. Git จะแจ้งไฟล์ที่มี conflict เปิดไฟล์นั้นขึ้นมา:
  1. เลือกว่าจะเก็บโค้ดไหน:

    • Accept Current Change: เก็บแค่ของเรา ทิ้งของเพื่อน
    • Accept Incoming Change: เก็บแค่ของเพื่อน ทิ้งของเรา
    • Accept Both Changes: เก็บทั้งสองส่วน
    • แก้ไขเอง: เขียนโค้ดใหม่รวมกัน
  2. ลบ conflict markers (<<<<<<<, =======, >>>>>>>) ออก

  3. Stage และ continue

  1. Push

Git Stash

บันทึกการเปลี่ยนแปลงชั่วคราวโดยไม่ต้อง commit:

Git Rebase

Rebase ใช้เพื่อทำให้ประวัติ commit เป็นเส้นตรงและสะอาด:

⚠️ คำเตือน: อย่า rebase branch ที่ push ไปแล้ว เพราะจะเปลี่ยนประวัติและทำให้เกิดปัญหากับทีม

.gitignore

ไฟล์ .gitignore ใช้ระบุไฟล์/โฟลเดอร์ที่ ไม่ต้องการ ให้ Git ติดตาม:

เพิ่มไฟล์ที่ถูกติดตามแล้วให้เข้า .gitignore

Git Log และประวัติ

การย้อนกลับ

Best Practices

1. Commit บ่อยๆ

  • Commit เมื่อทำงานเสร็จในจุดที่มีความหมาย
  • อย่ารอจนโค้ดเยอะเกินไป

2. เขียน Commit Message ที่ดี

  • อธิบายว่า ทำอะไร และ ทำไม
  • ใช้ภาษาที่ชัดเจนและสั้นกระชับ

3. ใช้ Branch แยกงาน

  • main/master: โค้ดที่พร้อม production
  • develop: โค้ดกำลังพัฒนา
  • feature/xxx: ฟีเจอร์ใหม่แต่ละอัน
  • hotfix/xxx: แก้ไขบั๊กด่วน

4. Pull บ่อยๆ

  • Pull จาก remote เป็นประจำเพื่อหลีกเลี่ยง conflict
  • รัน git pull ก่อน push เสมอ

5. Review ก่อน Commit

6. อย่า Commit ข้อมูลลับ

  • ห้าม commit .env, credentials.json, API keys
  • ใช้ .gitignore ป้องกัน
  • ใช้ environment variables แทน

สรุป

Git เป็นเครื่องมือสำคัญสำหรับนักพัฒนาทุกคน ช่วยให้:

  • ทำงานร่วมกันได้อย่างมีประสิทธิภาพ
  • ติดตามการเปลี่ยนแปลงทุกอย่าง
  • ย้อนกลับได้เมื่อเกิดปัญหา
  • แยกงานออกเป็น branches

ฝึกฝนใช้ Git เป็นประจำจะทำให้คุณเป็นนักพัฒนาที่มีประสิทธิภาพมากขึ้น!

แหล่งข้อมูลเพิ่มเติม

เอกสารอย่างเป็นทางการ

  • Git Documentation - เอกสารและข้อมูลอ้างอิงอย่างเป็นทางการ
  • Pro Git Book - หนังสือครบถ้วนฟรี
  • Git GitHub Repository - ซอร์สโค้ด
  • GitHub Docs - ฟีเจอร์เฉพาะของ GitHub

แนะนำสำหรับการเรียนรู้เพิ่มเติม