GitHub คืออะไร?

Software Developer
เครื่องมือสำหรับนักพัฒนาโปรแกรม  

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

GitHub ถูกใช้โดยนักพัฒนาในการจัดเก็บโค้ด เปิดเผยโปรเจคซอร์สโค้ด (Open Source) และทำงานร่วมกันในโปรเจคซอฟต์แวร์ โดยรองรับการสร้าง Repository (ที่เก็บโค้ด) และการทำงานร่วมกันโดยใช้ Branching, Pull Request, และ Issue Tracking

ประโยชน์ของ GitHub

1. การควบคุมเวอร์ชัน (Version Control)
  • GitHub ใช้ระบบ Git ซึ่งช่วยให้คุณสามารถเก็บประวัติการเปลี่ยนแปลงของไฟล์ได้ ทำให้สามารถย้อนกลับไปยังเวอร์ชันก่อนหน้าได้ง่ายๆ หากเกิดข้อผิดพลาดหรืออยากเปลี่ยนแปลงบางอย่าง
2. การทำงานร่วมกัน (Collaboration)
  • GitHub ช่วยให้นักพัฒนาหลายคนสามารถทำงานร่วมกันในโปรเจคเดียวกันได้โดยไม่ต้องกังวลเรื่องการชนกันของโค้ด เช่น การใช้ Branching เพื่อแยกงานกันทำและใช้ Pull Requests เพื่อนำโค้ดที่เปลี่ยนแปลงไปผสมรวมกับโค้ดหลัก

3. การจัดการโปรเจค (Project Management)
  • GitHub มีเครื่องมือในการติดตามงานและบัก (Issues, Projects, Discussions) ช่วยให้คุณจัดระเบียบการทำงานและติดตามความคืบหน้าได้อย่างมีประสิทธิภาพ

4. เปิดเผยโปรเจค Open Source
  • GitHub เป็นที่นิยมในการเผยแพร่โค้ดแบบ Open Source ซึ่งให้ทุกคนสามารถเข้าถึง, แก้ไข, และร่วมพัฒนาซอฟต์แวร์ได้

5. การสำรองข้อมูล (Backup)
  • GitHub ช่วยให้โปรเจคของคุณมีความปลอดภัยจากการสูญหายเนื่องจากเครื่องคอมพิวเตอร์พัง หรือการสูญหายของข้อมูล

6. การติดตามปัญหาหรือข้อบกพร่อง (Issue Tracking)
  • GitHub ช่วยให้คุณสามารถเปิด Issue เพื่อติดตามปัญหาหรือข้อบกพร่องในโปรเจค ซึ่งช่วยให้การทำงานเป็นระบบระเบียบมากขึ้น

วิธีการใช้งาน GitHub

1. การสร้างบัญชี (Sign Up)
  • ไปที่ GitHub และคลิก "Sign up"
  • กรอกข้อมูลที่จำเป็น เช่น ชื่อผู้ใช้, อีเมล, และรหัสผ่าน
  • เมื่อสมัครสมาชิกเสร็จ คุณสามารถเริ่มใช้ GitHub ได้ทันที
2. การสร้าง Repository
  • ไปที่หน้าโปรไฟล์ของคุณแล้วคลิก "Repositories" จากนั้นคลิก "New" เพื่อสร้าง repository ใหม่
  • กรอกชื่อ repository, คำอธิบาย (optional), และตั้งค่าให้เป็น public หรือ private
  • คลิก "Create repository" เมื่อเสร็จ
3. การเพิ่มไฟล์และโค้ดไปยัง Repository
  • ใช้ Git ในการอัพโหลดโค้ด เปิด Terminal หรือ Command Prompt

อัพโหลดไฟล์ผ่านเว็บไซต์
  • ไปที่หน้า repository ของคุณบน GitHub
  • คลิก "Add file" และเลือก "Upload files"
  • ลากไฟล์ที่ต้องการอัพโหลดขึ้นไป หรือเลือกไฟล์จากเครื่องคอมพิวเตอร์
  • ใส่ข้อความ commit และกด "Commit changes"

4. การใช้งาน Branch และ Pull Requests
  • Branch ใช้เพื่อแยกการพัฒนาฟีเจอร์หรือแก้บักจากโค้ดหลัก

5. การใช้ Issues เพื่อการติดตาม
  • บนหน้า repository ของคุณ, คุณสามารถเปิด Issue เพื่อระบุปัญหาหรือบักที่พบในโค้ด หรือเพื่อขอให้มีการพัฒนาฟีเจอร์ใหม่
  • กดที่ "Issues" บนหน้า repository แล้วคลิก "New issue" เพื่อสร้าง issue ใหม่

6. การใช้งาน Actions (CI/CD)
  • GitHub Actions เป็นเครื่องมือที่ใช้ในการตั้งค่า Continuous Integration/Continuous Deployment (CI/CD) ซึ่งช่วยให้คุณสามารถทดสอบ และดีพลอยโปรเจคโดยอัตโนมัติ เมื่อมีการเปลี่ยนแปลงในโค้ด

การใช้งาน GitHub ผ่าน GitHub Desktop

GitHub ยังมีแอปพลิเคชัน GitHub Desktop ที่ทำให้การใช้งาน GitHub ง่ายขึ้นสำหรับผู้ที่ไม่ถนัดใช้คำสั่งใน Terminal:
  • ดาวน์โหลดและติดตั้ง GitHub Desktop จาก [GitHub Desktop](https://desktop.github.com/)
  • ใช้งานผ่านอินเตอร์เฟซกราฟิกที่ใช้งานง่ายในการจัดการ repository

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

1. ข้อจำกัดในด้านขนาดไฟล์ (File Size Limitations)
  • ขนาดไฟล์สูงสุด: GitHub จำกัดขนาดไฟล์สูงสุดที่สามารถอัพโหลดได้ที่ 100 MB ต่อไฟล์ สำหรับไฟล์ที่มีขนาดเกินกว่า 100 MB จะไม่สามารถอัพโหลดผ่าน Git ได้
  • การใช้ Git LFS (Large File Storage): สำหรับไฟล์ที่มีขนาดใหญ่กว่า 100 MB เช่น ไฟล์ภาพ, วิดีโอ, หรือไฟล์โมเดล 3D, GitHub แนะนำให้ใช้ Git LFS (Large File Storage) ซึ่งเป็นบริการเสริมที่ช่วยจัดการกับไฟล์ขนาดใหญ่ แต่จะมีการจำกัดการใช้งานในแผน ฟรี ที่ 1 GB สำหรับพื้นที่เก็บข้อมูลและ 1 GB ต่อเดือนสำหรับการดาวน์โหลด
  • ขนาด Repository: ถึงแม้ GitHub จะไม่ได้จำกัดขนาดของ repository แต่ GitHub แนะนำว่า repository ควรจะมีขนาดไม่เกิน 5 GB โดยไม่ใช้ Git LFS เนื่องจากอาจส่งผลกระทบต่อประสิทธิภาพในการดึงข้อมูลจาก repository

2. ข้อจำกัดในด้านการใช้งาน (Usage Limitations)

การจำกัดการทำงาน (Rate Limiting): GitHub มีการจำกัดการใช้งาน API เพื่อป้องกันการใช้ทรัพยากรเกินกว่าที่ระบบจะรองรับได้:
  • ผู้ใช้ที่ไม่ได้ล็อกอินสามารถเรียกใช้ API ได้สูงสุด 60 ครั้งต่อชั่วโมง
  • ผู้ใช้ที่ล็อกอินสามารถเรียกใช้ API ได้สูงสุด 5,000 ครั้งต่อชั่วโมง
หากเกินขีดจำกัดนี้ คุณจะต้องรอจนกว่าจะรีเซ็ตการจำกัดในชั่วโมงถัดไป

การจำกัด Pull Request: GitHub ไม่ได้กำหนดขีดจำกัดสำหรับจำนวน Pull Requests ที่สามารถสร้างได้ แต่มีข้อจำกัดในการจัดการและตรวจสอบ Pull Request จำนวนมาก ๆ ที่อาจทำให้ระบบช้าลง

3. ข้อจำกัดในด้านการเข้าถึง (Access Limitations)

Private Repositories:
  • ในแผน ฟรี (Free plan), ผู้ใช้สามารถสร้าง private repositories ได้ไม่จำกัดจำนวน แต่สามารถเพิ่มได้สูงสุด 3 ผู้ร่วมงาน (collaborators) ต่อ repository
  • ในแผน GitHub Pro, Team, หรือ Enterprise ผู้ใช้สามารถเพิ่มผู้ร่วมงานได้มากขึ้น หรือจะมีฟีเจอร์เพิ่มเติมสำหรับการจัดการสิทธิ์การเข้าถึงที่ยืดหยุ่น
การเข้าถึงสำหรับทีมและองค์กร:
  • GitHub ให้คุณสร้าง GitHub Organization เพื่อจัดการ repository สำหรับทีม โดยสามารถจัดการสิทธิ์การเข้าถึงสำหรับสมาชิกในองค์กรได้อย่างยืดหยุ่นในแผน Team และ Enterprise

4. ข้อจำกัดในด้านการใช้งาน GitHub Actions (CI/CD)

ข้อจำกัดในการใช้งาน GitHub Actions:
  • แผนฟรี: GitHub Actions สำหรับ repository ที่เป็น public จะไม่มีข้อจำกัดในเรื่องของการใช้งาน แต่สำหรับ repository ที่เป็น private จะมีการจำกัดการใช้งาน โดยมี 2,000 นาที (minutes) ต่อเดือน สำหรับผู้ใช้ที่ใช้งานใน repository private
  • การเก็บบันทึก (Artifacts): ข้อจำกัดในแง่ของการเก็บผลลัพธ์จากการทำงานของ GitHub Actions (เช่น ข้อมูลบันทึกและไฟล์ผลลัพธ์) จะถูกจำกัดที่ 5 GB ต่อ repository ในแผน ฟรี และ 2,000 MB สำหรับการดาวน์โหลดต่อเดือน

5. ข้อจำกัดในด้านการค้นหา (Search Limitations)
  • การค้นหาโค้ด: GitHub จะจำกัดการค้นหาบางประเภท เช่น การค้นหาโค้ดใน repository ขนาดใหญ่หรือมีจำนวนมาก อาจทำให้ค้นหาช้าหรือไม่สามารถค้นหาผ่าน API ได้ในบางกรณี

 6. ข้อจำกัดในด้านการทำงานกับ Large Repositories
  • ขนาดของ repository: GitHub แนะนำให้ repository มีขนาดไม่เกิน 5 GB แต่การใช้ repository ที่มีขนาดใหญ่เกินไปอาจทำให้การทำงานช้าลง หรืออาจต้องใช้ Git LFS ในการจัดการไฟล์ขนาดใหญ่ ซึ่งต้องระวังการใช้พื้นที่และข้อจำกัดต่างๆ ที่ GitHub กำหนด

7. ข้อจำกัดในการใช้งาน Free Plan (แผนฟรี)

  • พื้นที่เก็บข้อมูล: ในแผนฟรี, ขนาดการใช้งานของ GitHub Packages (หากใช้งานสำหรับเก็บแพ็คเกจ) จะมีข้อจำกัดที่ 500 MB สำหรับการเก็บไฟล์ใน GitHub Packages
  • การทำงานร่วมกัน: สำหรับ repository private ในแผนฟรีสามารถมีผู้ร่วมงานได้สูงสุด 3 คน เท่านั้น
  • GitHub Actions: ผู้ใช้งานในแผนฟรีจะได้รับ 2,000 นาที ต่อเดือน สำหรับการใช้ GitHub Actions ใน repository ที่เป็น private

สรุปข้อจำกัดหลักของ GitHub:

  • ขนาดไฟล์: 100 MB ต่อไฟล์ (ต้องใช้ Git LFS สำหรับไฟล์ใหญ่กว่า 100 MB)
  • จำนวนการเรียก API: 5,000 ครั้งต่อชั่วโมงสำหรับผู้ใช้ที่ล็อกอิน
  • GitHub Actions: 2,000 นาทีต่อเดือนในแผนฟรีสำหรับ repository ที่เป็น private
  • ผู้ร่วมงานใน repository private: จำกัดที่ 3 คนในแผนฟรี
  • ข้อจำกัดการเก็บข้อมูล: 5 GB สำหรับ repository ขนาดใหญ่, 500 MB สำหรับ GitHub Packages ในแผนฟรี

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


บทสรุป GitHub เป็นเครื่องมือที่สำคัญสำหรับการพัฒนาและจัดการโปรเจคซอฟต์แวร์ที่ใช้ Git ในการควบคุมเวอร์ชัน ช่วยให้การทำงานร่วมกันสะดวกขึ้น โดยเฉพาะสำหรับโปรเจค Open Source หรือโปรเจคที่มีหลายคนทำงานร่วมกัน GitHub ยังให้เครื่องมือในการติดตามปัญหา, การจัดการโปรเจค, และการดีพลอยโค้ดอัตโนมัติ (CI/CD) ผ่าน GitHub Actions

การเรียนรู้การใช้งาน GitHub เป็นทักษะที่สำคัญในวงการพัฒนาซอฟต์แวร์ เพราะมันช่วยในการจัดการโปรเจคและการทำงานร่วมกับผู้อื่นอย่างมีประสิทธิภาพ