หนึ่งในความสับสนที่พบเห็นจากนักพัฒนาเมื่อเริ่มต้นใช้ Git เลย คือ “ทำไมถึงต้อง add ก่อนแล้วค่อย commit?” บทความนี้จะอธิบาย Git Workflow อย่างละเอียด พร้อมทำความเข้าใจ 3 พื้นที่หลักของ Git ได้แก่ Working Directory, Staging Area และ Repository ซึ่งเป็นพื้นฐานสำคัญของการใช้งาน Git ที่ถูกต้อง
Git Workflow คืออะไร?
Git Workflow คือวิธีการระบบงานที่เกี่ยวข้องกับการเลือก แก้ไข และบันทึกการเปลี่ยนแปลงของไฟล์ในโปรเจกต์ของคุณ ขั้นตอนนี้จะผ่านสามพื้นที่หลัก ได้แก่:
- Working Directory – พื้นที่ที่คุณทำงานกับไฟล์จริง
- Staging Area – พื้นที่ชั่วคราวที่เก็บไฟล์ก่อนคอมมิต
- Repository – พื้นที่เก็บประวัติการเปลี่ยนแปลงทั้งหมด
1. Working Directory
Working Directory คือพื้นที่บนคอมพิวเตอร์ของคุณที่มีไฟล์โปรเจกต์ทั้งหมด เมื่อคุณสร้าง แก้ไข หรือลบไฟล์ใดๆ Git จะตรวจจับการเปลี่ยนแปลงเหล่านี้ อย่างไรก็ตาม ณ ขั้นตอนนี้ Git ยังไม่ได้ทำการบันทึกการเปลี่ยนแปลง
ตัวอย่างเช่น เมื่อคุณแก้ไขไฟล์ app.js และบันทึกไฟล์ Git จะรู้ว่าไฟล์มีการเปลี่ยนแปลง แต่ยังไม่ได้ถูกเพิ่มลงใน Staging Area
2. Staging Area (Index)
Staging Area เป็นพื้นที่ชั่วคราวที่ใช้เก็บไฟล์ที่คุณต้องการบันทึกลงใน Repository หลังจากที่คุณแก้ไขไฟล์ในพื้นที่ Working Directory คุณจะใช้คำสั่ง git add เพื่อย้ายไฟล์เหล่านั้นไปยัง Staging Area
Staging Area มีประโยชน์มากเนื่องจากช่วยให้คุณสามารถเลือกว่าไฟล์ใดที่ควรจะรวมอยู่ในการ commit ครั้งถัดไป คุณอาจแก้ไขไฟล์หลายไฟล์ แต่ต้องการ commit เฉพาะไฟล์บางไฟล์ในครั้งนั้น
ตัวอย่าง:
git add app.js – เพิ่มไฟล์ app.js ลงใน Staging Area
git add . – เพิ่มไฟล์ที่มีการเปลี่ยนแปลงทั้งหมดลงใน Staging Area
3. Repository (Local Repository)
Repository คือพื้นที่เก็บประวัติการเปลี่ยนแปลงทั้งหมดของโปรเจกต์ เมื่อคุณใช้คำสั่ง git commit Git จะบันทึก Snapshot ของไฟล์ทั้งหมดที่อยู่ใน Staging Area พร้อมกับข้อมูลเพิ่มเติมเช่น:
- Commit Message – คำบรรยายการเปลี่ยนแปลง
- ชื่อผู้ที่ทำการแก้ไข (Author)
- วันเวลาที่ทำการ commit
- Hash ของ commit นั้น
ตัวอย่าง:
git commit -m "Add new feature for user authentication"
Git Workflow ทีละขั้นตอน
ลองดูตัวอย่างการทำงานของ Git Workflow ในสถานการณ์จริง:
ขั้นตอนที่ 1: สร้าง หรือแก้ไขไฟล์ (Working Directory)
คุณสร้างไฟล์ใหม่หรือแก้ไขไฟล์ที่มีอยู่แล้ว ตัวอย่างเช่น สร้างไฟล์ login.js เพื่อจัดการการเข้าสู่ระบบ
ตรวจสอบสถานะด้วยคำสั่ง:
git status
Output จะแสดงไฟล์ที่มีการเปลี่ยนแปลงและอยู่ใน Working Directory เท่านั้น
ขั้นตอนที่ 2: เพิ่มไฟล์ลงใน Staging Area
เมื่อคุณสำเร็จการแก้ไขและต้องการเตรียมสำหรับการบันทึก ให้ใช้คำสั่ง git add:
git add login.js
หรือถ้าต้องการเพิ่มไฟล์ทั้งหมด:
git add .
ตรวจสอบสถานะด้วย git status จะแสดงไฟล์ที่อยู่ใน Staging Area โดยใช้สีเขียว
ขั้นตอนที่ 3: Commit ไฟล์ลงใน Repository
เมื่อคุณพัฒนาไฟล์ทั้งหมดในพื้นที่ Staging Area แล้ว ให้ใช้คำสั่ง git commit เพื่อบันทึกการเปลี่ยนแปลงลงใน Repository:
git commit -m "Implement user login functionality"
ตรวจสอบประวัติด้วย:
git log
เหตุใดจึงต้องมี Staging Area?
คำถามที่หลายคนถาม “ทำไมต้องมี Staging Area? ทำไมไม่ให้ commit โดยตรงจาก Working Directory?” คำตอบคือ:
- ควบคุมการ Commit – คุณสามารถเลือกว่าไฟล์ใดที่จะ commit ในครั้งนี้
- Logical Commits – คุณสามารถสร้าง commit ที่มีความหมายตามเชิงตรรกะแทนที่จะ commit ทั้งหมด
- ตรวจสอบก่อน Commit – ใช้
git diffเพื่อตรวจสอบการเปลี่ยนแปลงก่อน commit - ขจัดไฟล์ที่ไม่จำเป็น – คุณอาจแก้ไขไฟล์ที่ไม่ต้องการบันทึก Git จะสามารถละเว้นไฟล์เหล่านั้นได้
คำสั่ง Git ที่สำคัญใน Workflow
| คำสั่ง | ตัวอย่าง | ความหมาย |
| git status | git status |
ตรวจสอบสถานะไฟล์ปัจจุบัน |
| git add | git add file.txt |
เพิ่มไฟล์ลงใน Staging Area |
| git commit | git commit -m "message" |
บันทึกไฟล์ลงใน Repository |
| git log | git log |
ดูประวัติ commit |
| git diff | git diff |
ดูความแตกต่างของไฟล์ |
| git reset | git reset file.txt |
นำไฟล์ออกจาก Staging Area |
สรุป
Git Workflow ประกอบด้วยสามพื้นที่ที่สำคัญ:
- Working Directory – พื้นที่ที่คุณแก้ไขไฟล์
- Staging Area – พื้นที่ชั่วคราวก่อน commit
- Repository – พื้นที่เก็บประวัติ
ความเข้าใจของ Git Workflow จะช่วยให้คุณใช้งาน Git ได้อย่างมีประสิทธิภาพและป้องกันข้อผิดพลาดในการพัฒนาซอฟต์แวร์ ไม่ว่าคุณจะทำงานเพียงลำพังหรือเป็นส่วนหนึ่งของทีมขนาดใหญ่
