Git เป็นระบบที่บันทึกการเปลี่ยนแปลงของไฟล์ตามช่วงเวลาต่าง ๆ ที่ช่วยให้เราสามารถย้อนกลับไปดูข้อมูลก่อนหน้าและเปรียบเทียบการเปลี่ยนแปลงระหว่างเวอร์ชันต่าง ๆ ของไฟล์ได้ แบบกระจาย (Distributed Version Control System) ที่เป็นที่นิยมในวงการ Software Development มากที่สุดในปัจจุบัน
Git ถูกสร้างขึ้นมาตั้งแต่ปี 2548 โดยมีจุดเริ่มต้นมาจากการที่ BitKeeper ซึ่งเป็น VCS ที่ใช้ในการพัฒนา Linux Kernel ได้ยกเลิกการใช้งานฟรี ทำให้ผู้สร้าง Linus Torvalds (ผู้สร้าง Linux) ต้องพัฒนา VCS ขึ้นมาใหม่ เพื่อใช้ใน Linux Kernel ต่อไป จึงได้มี Git เกิดขึ้นมาให้เราใช้งานกันจนถึงทุกวันนี้
จุดเด่น: ทำงานเร็ว กระจายศูนย์ จัดการ Branch ได้ดี
Git States

Git Workflow in Software Development

เริ่มต้นใช้งาน Git กัน!
- ติดตั้ง Git ลงในเครื่องของเราก่อน
โดยเข้าไปดาวน์โหลดได้ที่ https://git-scm.com/downloads
เลือกระบบปฏิบัติการของเครื่องตัวเอง

หลังจากติดตั้ง Git เรียบร้อยแล้ว เรามาลองตรวจสอบเวอร์ชันของ Git ในเครื่องของเรากัน ผ่านโปรแกรม Command Prompt (Windows) หรือ Terminal (macOS)
git --version หรือ git -v
2. แนะนำตัวกับ Git (ทำครั้งเดียวในเครื่อง)
git config --global user.name "ชื่อ"
git config --global user.email "อีเมล"
Note: หากมีการเปลี่ยนแปลงชื่อ หรือ อีเมล ให้รันคำสั่งข้างบน เพื่ออัปเดตข้อมูลได้
3. Workshop-Local: Create
สร้างโฟลเดอร์ชื่อ hello-git
mkdir hello-git
เข้าไปใน Folder
cd hello-git
เปลี่ยนโฟลเดอร์ธรรมดาเป็น Git Repository
git init
หรือ คัดลอกจาก Repo ที่มีอยู่
git clone <url>
สร้างไฟล์ readme.txt
echo Hello Git > readme.txt
สั่งบันทึก (Commit)
git add readme.txt หรือ git add .
สร้าง Snapshot ของงาน
git commit -m "Create file"
ตรวจสอบสถานะของไฟล์ที่อยู่ใน Staging
git status
4. Workshop-Local: Edit and Log
แก้ไขไฟล์ readme.txt โดยพิมพ์ข้อความเพิ่มเติมเพื่อทดลองแก้ไขไฟล์
บันทึกซ้ำ (Commit)
git add readme.txt หรือ git add .
สร้าง Snapshot ของงาน
git commit -m "Edit file"
ดูประวัติ
git log
5. Workshop-Local: Delete
ต้องการลบไฟล์
git rm <file>
บอก Git ให้ไม่จดจำไฟล์ที่ลบไปแล้ว
git rm --cached <file>
6. Workshop-Local: Restore
ถ้าลบไฟล์ในโฟลเดอร์ ทิ้งเฉย ๆ ต้องการกู้คืนไฟล์
git restore index.html หรือ git restore .
อยากยกเลิก Commit ล่าสุดทิ้งไปเลย
git reset --soft HEAD~1
เผลอทำพังไปหมด ย้อนเวลาด่วน
git reset --hard HEAD~1
git reflog คือ “บันทึกการกระทำทุกอย่าง” ในเครื่องเรา เปรียบเสมือนกล้องวงจรปิดของ Git แม้ว่าจะเผลอใช้ git reset –hard ลบประวัติ Commit ทิ้งไปจนมองไม่เห็นใน git log ปกติ แต่ใน reflog ทุกอย่างจะยังถูกบันทึกไว้ (ปกติจะเก็บไว้ประมาณ 30-90 วัน) เรียงจากปัจจุบันไปหาอดีต
git reflog
คำสั่งกู้ชีพ เราสามารถเลือกจุดย้อนเวลาได้
หา Commit ID หรือ HEAD@{n} ที่เราต้องการได้ จากนั้น
git reset --hard e9a287c หรือ git reset --hard HEAD@{2}
Note: หากเกิดเหตุ เราควรรีบกู้ทันที เพื่อความปลอดภัย
Branching
- เพื่อแยกการทำงานออกจากเส้นหลัก (Main/Master)
- พัฒนาฟีเจอร์ใหม่โดยไม่กระทบโค้ดที่รันอยู่
- แก้ไขบั๊กเร่งด่วน (Hotfix)
ดูรายชื่อ Branch ทั้งหมด
git branch
สร้าง Branch ใหม่
git branch <ชื่อใหม่>
สลับไปยัง Branch ที่ต้องการ
git switch <ชื่อ>
Note: ควรตรวจสอบชื่อ Branch หลักที่ทำงานก่อนทำการ Pull ไฟล์จากเครื่องแม่ข่าย
Merging
คือ การรวมไฟล์ Branch หนึ่ง มารวมกับอีก Branch หนึ่ง
ตรวจสอบ Branch
git branch
หากไม่ได้อยู่ Branch หลัก ให้เปลี่ยนมา branch หลักก่อน
git switch <ชื่อ Branch หลัก>
รันคำสั่งนี้เมื่ออยู่ที่ Branch หลัก
- แบบไม่มี commit การ merge
เป็นการรวมแบบ Fast-Forward จะไม่มีการสร้าง “Merge Commit”
git merge <ชื่อ-branch> -m "สรุปการรวมสั้น ๆ"
- แบบมี commit การ merge เสมอ
วิธีนี้จะทำให้เราเห็นเส้นสายของ Branch ใน Graph ชัดเจนว่าถูกแยกออกมาและรวมกลับเข้าไปตอนไหน เหมาะสำหรับการทำงานเป็นทีมใหญ่ๆ
git merge --no-ff <ชื่อ-branch> -m "รายละเอียดแบบสั้น ๆ"
- การเขียน Message ยาวๆ
Git จะเปิด Text Editor (เช่น Vim หรือ Nano) ขึ้นมาให้พิมพ์ เขียนข้อความเสร็จแล้วกด Save และ Exit ระบบจะทำการ Merge ให้พร้อม Message นั้น
git merge <ชื่อ-branch>
จากนั้นตรวจสอบประวัติการแก้ไข ผ่านคำสั่ง
git log
Extension สำหรับ VS Code
ใน VS Code จะมี Source Control มาให้แล้ว หากนักพัฒนาต้องการดูประวัติและเส้นทางการเปลี่ยนแปลงของไฟล์ สามารถดาวน์โหลดส่วนขยาย Git Graph ติดตั้งเพิ่มเติมได้

จากคำสั่งข้างต้น เป็นคำสั่งพื้นฐานสำหรับการใช้งาน Git แบบ Local ภายในเครื่องตัวเอง หากยังไม่เคยใช้ ลองใช้งานแบบง่าย ๆ ก่อน เพื่อน ๆ นักพัฒนาลองใช้งานกันนะคะ 🙂
แหล่งความรู้ Git เพิ่มเติม