Git Workflow คืออะไร? ทำความเข้าใจ Working Directory, Staging Area และ Repository

หนึ่งในความสับสนที่พบเห็นจากนักพัฒนาเมื่อเริ่มต้นใช้ 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 ได้อย่างมีประสิทธิภาพและป้องกันข้อผิดพลาดในการพัฒนาซอฟต์แวร์ ไม่ว่าคุณจะทำงานเพียงลำพังหรือเป็นส่วนหนึ่งของทีมขนาดใหญ่