หลายคนคงจะเคยเห็นสองคำนี้ผ่าน ๆ ตาอยู่บ้าง แต่ก็ยังอาจไม่เข้าใจว่ามันคืออะไร มันคือตัวเดียวกันรึเปล่า? ถ้าไม่ใช่ มันต่างกันอย่างไร? มาไขข้อสงสัยไปในบทความนี้กันเถอะ
ยาวไปไม่อ่าน (TL;DR)
- Git คือระบบจัดการการแก้ไข (Version Control System) ของไฟล์ต่าง ๆ ในโปรเจค ช่วยให้การจัดเก็บเป็นระเบียบ สามารถติดตามการแก้ไขที่เกิดขึ้นในเจคได้ — Git ทำงานเป็นแบบ Local ในเครื่องของผู้ใช้
- GitHub คือบริการจัดเก็บ Git Repository ออนไลน์ ที่จะมีฟีเจอร์ที่ช่วยให้นักพัฒนาคนอื่น ๆ มามีส่วนร่วมในการแก้ไขโค้ดใน Repository ของเราได้ อย่างเช่น Pull Request, Issue Tracking — GitHub ทำงานอยู่บนคลาวด์ เหมือนเป็นโฮสท์ให้ Git Repository ของเรา
Git คืออะไร?
โลโก้ของ Git (ซ้าย) และ GitHub (ขวา)
Git เป็นระบบ Version Control System (VCS) หรือพูดง่าย ๆ คือเป็นระบบที่เอาไว้ควบคุมการแก้ไขไฟล์มีฟีเจอร์หลัก ๆ ที่น่าสนใจดังนี้
- สร้างจุด Commit ที่เป็นเสมือน Checkpoint ให้โค้ดของเรา เผื่อมีอะไรเสียจะได้ย้อนกลับมาจุดที่มันยังปกติได้
- เก็บประวัติการแก้ไขทั้งหมด รู้หมดว่าแก้อะไร แก้ตอนไหน แล้วใครเป็นคนแก้
- หลายแก้ไขโค้ดในไฟล์เดียวกันได้ ไม่ต้องกลัวว่าจะเขียนทับกัน
ซึ่งโค้ดของเราก็จะถูกเก็บไว้ ในสิ่งที่เรียกว่า Repository ที่เรียกสั้น ๆ ว่า Repo / รีโป ส่วนใหญ่ก็จะสร้างเป็น 1 รีโป/1 โปรเจค
Git ทำอะไรได้บ้าง?
- Version Control: จัดเก็บการแก้ไขทุกอย่างที่เกิดขึ้นใน Repository ของโปรเจค
- Branching: แตก Branch ออกมาจากตัวโค้ดหลัก ทำให้สามารถพัฒนา/ทดลองเขียนฟีเจอร์ใหม่ ๆ ได้โดยไม่กระทบกับตัวโค้ดหลัก
- Commit History / Revert Commit: ย้อนกลับไปเวอร์ชันเก่า ๆ ของโค้ดได้ เช่น ย้อนกลับไปดูก่อนที่โค้ดส่วนนี้จะพัง
- Tagging: มาร์คจุดไว้ใน Commit History ส่วนใหญ่จะใช้เป็นการมาร์คเวอร์ชั่น (เช่น มาร์คว่า v1.2 ถูกแผยแพร่ที่ Commit ตัวนี้)
เหล่านี้เป็นเพียงฟีเจอร์พื้นฐานของ Git เท่านั้น หากใครสนใจสามารถไปดูต่อได้ที่ Git Documentation
GitHub คืออะไร
หน้าแรกของเว็บไซต์ GitHub
มีแค่ Git เฉย ๆ เราก็ทำงานร่วมกับคนอื่นไม่ได้ เพราะเป็นระบบที่ทำงานอยู่ภายในเครื่องเราเท่านั้น เราเลยต้องมาพึ่ง GitHub เพื่อเป็นที่เก็บ Repository แบบออนไลน์เพื่อให้เราทำงานร่วมกับคนอื่นได้