Git คือ ระบบควบคุมเวอร์ชัน (Version Control System) ที่ถูกออกแบบมาเพื่อจัดการโค้ดของโปรแกรมที่มีความซับซ้อนและมากมาย โดยเฉพาะในการทำงานเป็นทีม ที่มีหลายคนทำงานร่วมกันบนโค้ดเดียวกัน
Git ถูกสร้างขึ้นโดย Linus Torvalds (ผู้สร้าง Linux) ในปี 2005 เพื่อจัดการการพัฒนาแกนของ Linux (Linux kernel) ที่มีนักพัฒนาจำนวนมากทำงานร่วมกัน
Git มีคุณสมบัติที่สำคัญดังนี้:
- ระบบแจกแจง (Distributed): ทุกคนที่ทำงานบนโค้ดเดียวกันจะมีสำเนาของโค้ดทั้งหมด ซึ่งทำให้สามารถทำงานได้แม้ว่าจะไม่มีการเชื่อมต่อกับเครือข่าย
- ความยืดหยุ่นในการจัดการสาขา (Branching): Git มีระบบสาขาที่มีประสิทธิภาพ ทำให้สามารถทำงานบนส่วนต่างๆ ของโค้ดได้โดยไม่กระทบกับส่วนอื่น
- ความเร็ว: Git ถูกออกแบบมาเพื่อเป็นระบบที่มีประสิทธิภาพสูง ทำให้สามารถจัดการโค้ดขนาดใหญ่ได้เร็ว
- ความปลอดภัย: Git ใช้ SHA1 เพื่อจัดการข้อมูล ทำให้ข้อมูลที่เก็บอยู่ใน Git มีความปลอดภัย
Git ได้รับความนิยมอย่างมากในวงการพัฒนาซอฟต์แวร์ และเป็นเครื่องมือที่จำเป็นสำหรับการทำงานเป็นทีมในปัจจุบัน
หลังจากที่เรารู้แล้วว่า Git คืออะไร มาดูกันต่อว่า Git ทำงานอย่างไร
Git ทำงานโดยการจัดเก็บ “snapshots” ของโค้ดที่คุณทำงานอยู่ แต่ละครั้งที่คุณทำการ commit หรือบันทึกสถานะของโค้ด Git จะจัดเก็บภาพของไฟล์ที่คุณมีอยู่ในขณะนั้น โดยถ้าไฟล์ไม่มีการเปลี่ยนแปลง Git จะไม่จัดเก็บไฟล์ใหม่ แต่จะสร้างลิงก์ไปยังไฟล์เดิมที่มีอยู่แล้ว
Git มี 3 สถานะหลักที่ไฟล์ของคุณสามารถอยู่ได้ คือ committed, modified และ staged:
- Committed หมายถึงข้อมูลได้ถูกเก็บอย่างปลอดภัยในฐานข้อมูลแล้ว
- Modified หมายถึงคุณได้แก้ไขไฟล์แล้วแต่ยังไม่ได้ commit
- Staged หมายถึงคุณได้ทำเครื่องหมายไฟล์ที่ถูกแก้ไขในสถานะปัจจุบันเพื่อ commit ในการ commit ถัดไป
Git มี 3 พื้นที่ที่ใช้งานหลัก คือ Git directory, working directory และ staging area:
- Git directory คือที่ที่ Git จัดเก็บ metadata และฐานข้อมูลของ object สำหรับโปรเจค นี่คือส่วนที่สำคัญที่สุดของ Git และเป็นส่วนที่ถูกคัดลอกเมื่อคุณทำการ clone ฐานข้อมูลจากคอมพิวเตอร์อื่น
- Working directory คือสำเนาของเวอร์ชันของไฟล์ที่คุณสามารถทำการแก้ไขได้
- Staging area คือไฟล์ที่เก็บข้อมูลเกี่ยวกับสิ่งที่จะไปอยู่ในการ commit ถัดไป ซึ่งเรียกว่า ‘index’ ใน Git
การทำงานพื้นฐานของ Git คือการแก้ไขไฟล์ใน working directory ของคุณ จากนั้นทำการ stage ไฟล์ที่คุณต้องการจะ commit และทำการ commit ทุกไฟล์ที่อยู่ใน staging area ที่คุณได้ทำการ stage ไว้
ด้วยการทำงานแบบนี้ Git ช่วยให้คุณสามารถควบคุมได้ว่าไฟล์ไหนที่คุณต้องการจะ commit ในแต่ละครั้ง ทำให้คุณสามารถจัดการการเปลี่ยนแปลงของโค้ดได้อย่างมีประสิทธิภาพและระบบ
เมื่อเราเข้าใจแล้วว่า Git ทำงานอย่างไร มาดูกันต่อว่าเราสามารถใช้ Git อย่างไร
การใช้งาน Git สามารถแบ่งออกเป็นสามขั้นตอนหลัก คือ Initialize, Add และ Commit:
- Initialize: ขั้นตอนนี้เป็นการสร้าง repository ใหม่หรือเริ่มต้นการใช้งาน Git ในโปรเจคของคุณ คุณสามารถทำได้โดยใช้คำสั่ง
git init
ใน directory ของโปรเจคของคุณ - Add: หลังจากที่คุณได้ทำการแก้ไขไฟล์ในโปรเจคของคุณแล้ว คุณต้องทำการ add ไฟล์เหล่านั้นเข้าไปใน staging area ของ Git คุณสามารถทำได้โดยใช้คำสั่ง
git add
ตามด้วยชื่อไฟล์ที่คุณต้องการจะ add หรือคุณสามารถใช้คำสั่งgit add .
เพื่อ add ทุกไฟล์ที่มีการเปลี่ยนแปลง - Commit: หลังจากที่คุณได้ทำการ add ไฟล์ที่คุณต้องการจะ commit แล้ว คุณสามารถทำการ commit ไฟล์เหล่านั้นเข้าไปใน Git directory ของคุณได้โดยใช้คำสั่ง
git commit
ตามด้วย option-m
และข้อความที่อธิบายการเปลี่ยนแปลงที่คุณทำ
นอกจากนี้ Git ยังมีคำสั่งอื่น ๆ ที่สำคัญอีกมากมาย เช่น git status
สำหรับตรวจสอบสถานะของไฟล์ใน working directory และ staging area, git log
สำหรับดูประวัติการ commit, git branch
สำหรับการจัดการ branch และ git checkout
สำหรับการเปลี่ยน branch หรือการย้อนกลับไปยังสถานะของไฟล์ในการ commit ที่ผ่านมา
ด้วยการใช้งาน Git นี้ คุณสามารถจัดการการเปลี่ยนแปลงของโค้ดในโปรเจคของคุณได้อย่างมีประสิทธิภาพ ทั้งยังช่วยให้คุณสามารถทำงานร่วมกับผู้อื่นได้อย่างราบรื่น และยังช่วยให้คุณสามารถย้อนกลับไปยังสถานะของโค้ดในขณะที่ทำการ commit ใด ๆ ที่ผ่านมาได้
นั่นคือภาพรวมของ Git และวิธีการใช้งานที่พื้นฐาน แต่ Git ยังมีความสามารถอื่น ๆ ที่ยิ่งใหญ่และซับซ้อนมากขึ้นอีก เช่น การทำงานร่วมกับ remote repository ผ่านคำสั่ง git push
และ git pull
, การแก้ไข conflict ที่เกิดขึ้นเมื่อมีการเปลี่ยนแปลงที่ขัดแย้งกัน, การใช้ git rebase
สำหรับการเปลี่ยนแปลงประวัติการ commit, และอื่น ๆ อีกมากมาย
Git เป็นเครื่องมือที่มีความสามารถอย่างมากและซับซ้อน แต่เมื่อคุณเริ่มต้นใช้งานและคุ้นเคยกับมัน คุณจะพบว่ามันเป็นเครื่องมือที่มีคุณค่าและทรงพลังในการจัดการกับโค้ดของคุณ ไม่ว่าคุณจะทำงานคนเดียวหรือทำงานร่วมกับทีมขนาดใหญ่
สำหรับผู้ที่สนใจอยากศึกษาเพิ่มเติมเกี่ยวกับ Git แนะนำให้เข้าไปที่ Pro Git book ที่เป็นแหล่งข้อมูลที่ดีและครอบคลุมทุกอย่างเกี่ยวกับ Git ทั้งหมด