Git คืออะไร
ทำความรู้จัก Git ก่อน ทำไมต้องใช้ version control และความต่างระหว่าง Git กับ GitHub
เคยตั้งชื่อไฟล์แบบนี้ไหม งาน_final.pptx, งาน_final_v2.pptx, งาน_final_V3_จริงๆ.pptx, งาน_final_ใช้อันนี้.pptx ถ้าเคย คุณกำลังทำ version control (ระบบเก็บเวอร์ชันไฟล์ตามเวลา) อยู่ แค่ทำด้วยมือของตัวเอง
Git คือระบบที่ทำเรื่องนี้ให้อัตโนมัติ จัดระเบียบ และย้อนไปดูได้ทุกเวอร์ชันโดยไม่เขียนทับของเดิม
ทำเองด้วยมือ vs ใช้ Git
ลอง toggle ดูความต่างระหว่างสองวิธี เปลี่ยนไปสักหนึ่งสัปดาห์แล้วจะเริ่มเห็นว่าทำไม Git ถึงจำเป็น
Git คืออะไร
- Version control system ระบบเก็บเวอร์ชันไฟล์ตามเวลา
- เขียนโดย Linus Torvalds ในปี 2005 (คนเดียวกับที่เขียน Linux)
- ฟรี และเป็น open source (เปิดให้ทุกคนอ่านและแก้โค้ดต้นฉบับได้) บริษัท software ทุกที่ในโลกใช้
ปัญหาอะไรที่ Git แก้ได้
- ย้อนเวลา อยากดูว่า code วันจันทร์หน้าตาเป็นยังไงก็ย้อนได้ ไม่ต้องกลัวว่าจะแก้ไฟล์พังแล้วไม่มีทางกลับ
- ทำงานพร้อมกันหลายคน แต่ละคนเขียน code ที่เครื่องตัวเอง แล้วรวมเข้าด้วยกันโดยไม่ทับกัน
- ทดลองโดยไม่กระทบงานหลัก อยากลอง refactor (แก้โครงสร้างโค้ดโดยไม่เปลี่ยน behavior) แยก branch ไปเล่น ถ้าไม่ work ก็ทิ้ง ของหลักไม่เสียหาย
- เก็บ context ทุก commit บันทึกว่าใครเปลี่ยน อะไร เมื่อไหร่ พร้อมข้อความว่า “ทำไม” อีก 6 เดือนกลับมาอ่านก็ยังเข้าใจ
Mental model: time machine สำหรับไฟล์
วิธีที่ง่ายที่สุดในการเข้าใจ Git คือคิดถึงมันเป็น “time machine สำหรับไฟล์” Git ถ่ายภาพ snapshot ไฟล์ทั้งหมดไว้ทุกครั้งที่คุณสั่งบันทึก snapshot แต่ละจุดเรียกว่า commit
ลองลาก slider ข้างล่าง คุณจะเห็นเนื้อไฟล์เดียวกันเปลี่ยนไปตาม commit ที่เลือก นี่แหละจุดแข็งของ Git
2d9a803ปรับภาษาให้เป็นทางการ10 นาทีก่อนSomchai: Web Developer สวัสดี ผมชื่อ Somchai ทำเว็บได้ ทักษะ: HTML, CSS, JavaScript ติดต่อ: [email protected]
ไฟล์เดียวกัน แต่เนื้อเปลี่ยนไปตาม commit ที่เลือก นี่แหละความหมายของคำว่า “time machine” ใน Git
Git ≠ GitHub
จุดสับสนที่เจอบ่อยที่สุดของมือใหม่คือคิดว่า Git กับ GitHub เป็นอันเดียวกัน ซึ่งคนละเรื่อง
- ติดตั้งบน laptop / desktop ของคุณ
- ไม่ต้องต่อ internet ก็ commit ได้
- คนคนเดียวก็ใช้ได้ ไม่ต้องมีทีม
2 ฝั่งเข้าด้วยกัน
- เก็บ repo บน cloud ที่ github.com
- ต้องมี internet ถึงจะ push/pull ได้
- แชร์ให้ทีมทำงานด้วยกันได้
คำศัพท์ที่จะเจอเรื่อยๆ
ก่อนไป lesson ถัดไป ขอ preview คำศัพท์ที่จะเจอ ไม่ต้องจำตอนนี้ก็ได้ แค่พอมีภาพ
- Repository (เรียกสั้นว่า repo) = โปรเจกต์ที่อยู่ภายใต้การดูแลของ git
- Commit = snapshot 1 ก้อนของไฟล์ ณ เวลาที่บันทึก (เรียนใน lesson ถัดไป)
- Branch = สายงานแยก ใช้ทำ feature ใหม่โดยไม่กระทบ main (เรียน lesson ต่อไป)
- Merge = รวม branch กลับเป็นหนึ่ง
- Remote = repo ออนไลน์ ส่วนใหญ่อยู่บน GitHub
สรุป
- Git = tool ที่ช่วยเก็บประวัติไฟล์แบบอัตโนมัติ มีระเบียบ ย้อนได้
- เริ่มปี 2005 โดย Linus Torvalds ฟรี และใช้ทุกที่ในวงการ software
- แก้ 4 ปัญหาใหญ่: ย้อนเวลา, ทำงานหลายคน, ทดลอง, เก็บ context
- Git (tool) ≠ GitHub (service): Git ใช้บนเครื่อง GitHub เก็บ online
ใน lesson ถัดไปจะเจาะลึกที่สุดของ Git คือตัว commit snapshot ก้อนหนึ่งมีอะไรอยู่ข้างใน และทำไมถึงต่างจากการเซฟไฟล์ปกติ