Skip to main content

Git กับ GitHub คืออะไร ต่างกันอย่างไร?

หลายคนคงจะเคยเห็นสองคำนี้ผ่าน ๆ ตาอยู่บ้าง แต่ก็ยังอาจไม่เข้าใจว่ามันคืออะไร มันคือตัวเดียวกันรึเปล่า? ถ้าไม่ใช่ มันต่างกันอย่างไร? มาไขข้อสงสัยไปในบทความนี้กันเถอะ

ยาวไปไม่อ่าน (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 แบบออนไลน์เพื่อให้เราทำงานร่วมกับคนอื่นได้

GitHub ทำอะไรได้บ้าง?

นอกจากจัดเก็บ Repository แบบออนไลน์ให้เราแล้ว จะมีฟีเจอร์ที่จะช่วยอำนวยความสะดวกให้กับการพัฒนาร่วมกันเป็นทีมดังนี้:

  • Pull Request (PR): สร้างคำร้องให้เอาการแก้ไขของเรา เข้าไปรวมกับตัวโค้ดหลัก จะใช้ในกรณี เช่น นำฟีเจอร์ใหม่ที่เขียนขึ้นรวมกับตัวโค้ดหลักของโปรเจค
  • Code Review: ในการสร้าง PR จะต้องมีการอนุมัติก่อนถึงจะเอาไปรวมได้ ฟีเจอร์นี้จะมาช่วยให้คนในทีม (หรือผู้ที่เกี่ยวข้อง) มาตรวจสอบ/พูดคุยสิ่งที่แก้ไขก่อนจะนำไปรวมจริง ๆ
  • Issue Tracking: ให้ผู้ที่มีส่วนร่วมมาสร้างรายการ เช่น แจ้งบัค, ถามคำถาม หรือร้องขอฟีเจอร์ใหม่ได้ โดยจะเชื่อมกับ PR ได้ — เช่น PR นี้เป็นการแก้ไขบัคที่แจ้งใน Issue #24
  • Open-Source Repository: ช่วยให้ผู้คนมีส่วนร่วมกับโครงการ Open-Source ได้ง่ายขึ้น โดยจะเป็นการใช้ฟีเจอร์ข้างต้นที่กล่าวมา มาช่วยจัดการ
  • Automation: GitHub มาพร้อมฟีเจอร์ที่ช่วยปรับให้งานบางส่วนเป็นอัตโนมัติได้ เช่น GitHub Actions ที่จะมาช่วยในเรื่อง CI/CD

พวกนี้ก็เป็นเพียงฟีเจอร์เบื้องต้นของ GitHub เช่นเดิม หากใครสนใจสามารถไปอ่านต่อได้ที่นี่

ตัวอย่าง Pull Request บนโปรเจค Open-Source — จะเห็นได้ถึงการระบุฟีเจอร์ที่เพิ่มเข้ามา และการพูดคุยของผู้ที่มีส่วนร่วม

GitHub เป็นเพียงหนึ่งในผู้ให้บริการ Git เท่านั้น ยังมีเจ้าอื่นอีกเช่น GitLab, Bitbucket หรือจะโฮสท์เซิฟเวอร์ Git เป็นของตัวเองก็ยังได้ — ซึ่งความแตกต่างของแต่ละเจ้าก็จะเป็นพวกฟีเจอร์ที่กล่าวไปทางด้านบน


สรุป

Git เป็นระบบที่ช่วยจัดการการแก้ไขใน Repository ส่วน GitHub เป็นบริการจัดเก็บ Repository ออนไลน์พร้อมกับฟีเจอร์อำนวยความสะดวกต่าง ๆ ที่ให้เราไปทำงานร่วมกันคนอื่นได้

อ้างอิง