Git Version Control
Git Version Control
Git เป็นระบบควบคุมเวอร์ชัน (Version Control System) ที่ช่วยให้นักพัฒนาสามารถติดตามการเปลี่ยนแปลงของโค้ด ทำงานร่วมกันเป็นทีม และจัดการประวัติการพัฒนาได้อย่างมีประสิทธิภาพ
ทำไมต้องใช้ Git?
- ติดตามการเปลี่ยนแปลง: บันทึกทุกการแก้ไข พร้อมประวัติและเหตุผล
- ทำงานร่วมกัน: หลายคนทำงานบนโค้ดเดียวกันได้พร้อมกัน
- ย้อนกลับได้: กู้คืนโค้ดเวอร์ชันเก่าได้ทุกเมื่อ
- แยกงาน: สร้าง branch เพื่อพัฒนาฟีเจอร์แยกจากโค้ดหลัก
การติดตั้ง Git
Windows
ดาวน์โหลดและติดตั้งจาก https://git-scm.com/
macOS
Linux
ตรวจสอบการติดตั้ง
Naming Conventions
การตั้งชื่อในโปรเจกต์ซอฟต์แวร์มีหลายรูปแบบ ขึ้นอยู่กับภาษาและบริบท:
| รูปแบบ | ตัวอย่าง | ใช้กับ |
|---|---|---|
| snake_case | learn_dev_basic | Python, database fields |
| camelCase | learnDevBasic | JavaScript, Java variables |
| PascalCase | LearnDevBasic | Class names ในหลายภาษา |
| kebab-case | learn-dev-basic | URLs, CSS class names, Git repos |
การตั้งค่า Git ครั้งแรก
การตั้งค่า SSH Keys สำหรับ GitHub
1. ตรวจสอบ SSH Keys ที่มีอยู่
2. สร้าง SSH Key ใหม่
กด Enter เพื่อใช้ตำแหน่งเริ่มต้น และตั้ง passphrase (หรือข้ามได้)
3. แสดง Public Key
4. เพิ่ม SSH Key ใน GitHub
- ไปที่ https://github.com/settings/keys
- คลิก "New SSH key"
- วาง public key ที่ copy มา
- คลิก "Add SSH key"
5. ทดสอบการเชื่อมต่อ
ถ้าสำเร็จจะเห็นข้อความ: Hi username! You've successfully authenticated...
คำสั่ง Git พื้นฐาน
เริ่มต้นโปรเจกต์
การ Clone Repository
การ Commit
Commit Message Best Practices
รูปแบบที่ดี:
feat: เพิ่มฟีเจอร์ loginfix: แก้ไขปุ่ม submit ไม่ทำงานdocs: อัปเดต READMErefactor: ปรับโครงสร้างฟังก์ชัน authtest: เพิ่ม 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
- ไปที่ Pull Requests ใน GitHub repository
- คลิก "New pull request"
- เลือก base branch (เช่น
main) และ compare branch (เช่นdev-feature) - กดปุ่ม "Create pull request"
- เขียน description อธิบายการเปลี่ยนแปลง
- รอ code review แล้วกด "Merge pull request"
การ Merge ผ่าน Command Line
Conflict Resolution
เมื่อเกิด conflict (ความขัดแย้ง) ระหว่างการ merge:
ขั้นตอนการแก้ไข
- Pull branch ที่ต้องการ merge มา
- Git จะแจ้งไฟล์ที่มี conflict เปิดไฟล์นั้นขึ้นมา:
-
เลือกว่าจะเก็บโค้ดไหน:
- Accept Current Change: เก็บแค่ของเรา ทิ้งของเพื่อน
- Accept Incoming Change: เก็บแค่ของเพื่อน ทิ้งของเรา
- Accept Both Changes: เก็บทั้งสองส่วน
- แก้ไขเอง: เขียนโค้ดใหม่รวมกัน
-
ลบ conflict markers (
<<<<<<<,=======,>>>>>>>) ออก -
Stage และ continue
- 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
แนะนำสำหรับการเรียนรู้เพิ่มเติม
- Learn Git Branching - บทเรียนแบบภาพและโต้ตอบ
- Git Cheat Sheet - ข้อมูลอ้างอิงด่วน
- Oh My Git! - เกมเรียนรู้ Git
- Atlassian Git Tutorials - คู่มือครบถ้วน