PlusMagi's Blog By Pitt Phunsanit GIT Version Control (หรือ Source Control )

Version Control (หรือ Source Control )

Version Control คือระบบที่ช่วยบันทึกการเปลี่ยนแปลงของไฟล์ต่าง ๆ ในโปรเจกต์เมื่อเวลาผ่านไป ทำให้เราสามารถย้อนกลับไปดู แก้ไข หรือกู้คืนไฟล์ในเวอร์ชันก่อนหน้าได้ ระบบนี้เปรียบเสมือน “เครื่องไทม์แมชชีน” สำหรับนักพัฒนาซอฟต์แวร์และการทำงานร่วมกันเป็นทีม


ทำไมต้องใช้ Version Control ?

หากคุณเคยเซฟไฟล์ชื่อ work_final.php, work_final_v2.php, หรือ work_final_REAL.php คุณกำลังเผชิญกับปัญหาที่ Version Control แก้ได้โดยตรง

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

ประเภทของ Version Control

ระบบควบคุมเวอร์ชันหลัก ๆ แบ่งออกเป็น 2 ประเภท


Centralized Version Control Systems

มีเซิร์ฟเวอร์กลางตัวเดียวที่เก็บไฟล์เวอร์ชันทั้งหมดไว้ ทุกคนต้องดึงข้อมูลและส่งข้อมูลกลับไปที่นี่ที่เดียว

  • ตัวอย่าง: Subversion , Perforce
  • ข้อเสีย: หากเซิร์ฟเวอร์ล่มหรือเน็ตหลุด จะไม่สามารถบันทึกประวัติการทำงานได้

Distributed Version Control Systems

ผู้ใช้ทุกคนจะมี “สำเนา” ของประวัติการทำงานทั้งหมดเก็บไว้ในเครื่องตัวเอง ไม่ใช่แค่ไฟล์เวอร์ชันล่าสุด

  • ตัวอย่าง: Git, Mercurial
  • ข้อดี: ทำงานได้รวดเร็วแม้ไม่มีอินเทอร์เน็ต และมีความปลอดภัยสูงเพราะทุกคนมีสำเนาสำรองไว้

ขั้นตอนการทำงานพื้นฐาน

ในระบบที่นิยมที่สุดอย่าง Git มักจะมีขั้นตอนหลัก ๆ ดังนี้

  1. Working Directory: พื้นที่ที่คุณแก้ไขไฟล์จริงบนเครื่อง
  2. Staging Area : พื้นที่พักข้อมูล เพื่อเลือกว่าจะบันทึกการเปลี่ยนแปลงไหนบ้าง
  3. Repository : เมื่อทำการ Commit ข้อมูลจะถูกบันทึกลงในฐานข้อมูลบนเครื่องของคุณ
  4. Remote Repository: เมื่อพร้อมจะแบ่งปันงาน ให้ทำการ Push ขึ้นไปบนเซิร์ฟเวอร์

คำศัพท์ที่ควรรู้

คำศัพท์ความหมาย
Repository ที่เก็บรวบรวมไฟล์และประวัติทั้งหมดของโปรเจกต์
Commitการบันทึกสถานะของไฟล์ในขณะนั้น พร้อมข้อความอธิบาย (Commit Message)
Branchการแยกกิ่งก้านของโค้ดออกมาเพื่อทำงานแยกต่างหาก
Mergeการรวมโค้ดจาก Branch หนึ่งกลับเข้าสู่อีก Branch หนึ่ง
Pull / Fetchการดึงข้อมูลล่าสุดจากเซิร์ฟเวอร์มาที่เครื่องเรา
Conflictเกิดขึ้นเมื่อมีการแก้ไขบรรทัดเดียวกันในเวลาพร้อมกัน ระบบจะให้เราเลือกว่าจะใช้ของใคร

ข้อแนะนำ: สำหรับการเริ่มต้นใช้งาน การลองสร้าง Repository ใน GitHub หรือใช้คำสั่งพื้นฐานใน VS Code จะช่วยให้เห็นภาพการทำงานได้ชัดเจนที่สุดครับ


อ่านเพิ่มเติม

Exit mobile version