GitHub เป็นแพลตฟอร์มเว็บที่ใหญ่ที่สุดสำหรับการโฮสต์ Git repository การพัฒนาร่วมกัน และการทำงานอัตโนมัติของกระบวนการ ซึ่งเป็นของ Microsoft มันไม่เพียงให้บริการจัดเก็บโค้ดที่ควบคุมเวอร์ชันเท่านั้น แต่ยังมีชุดเครื่องมือการจัดการโปรเจกต์ที่ครบถ้วน: Issue Tracking, Pull Request พร้อมการตรวจสอบโค้ด, Actions สำหรับ CI/CD และ Wiki สำหรับเอกสารประกอบ ตามข้อมูลของ GitHub, 2024 แพลตฟอร์มนี้มีนักพัฒนากว่า 100 ล้านคนและ 420 ล้าน repository
ประเด็นสำคัญ
GitHub เป็นบริการเว็บสำหรับการจัดเก็บและทำงานร่วมกันบน Git repository ก่อตั้งขึ้นในปี 2008 โดย Tom Preston-Werner, Chris Wanstrath และ PJ Hyett ในปี 2018 บริษัทถูกซื้อกิจการโดย Microsoft ในราคา 7.5 พันล้านดอลลาร์ แพลตฟอร์มนี้ให้อินเทอร์เฟซเว็บสำหรับการดำเนินการ Git ทั้งหมด โดยเพิ่มฟีเจอร์ทางสังคม: forks, ดาว, การติดตาม, การตรวจสอบโค้ด และระบบ Continuous Integration ในตัว
ความแตกต่างหลักระหว่าง GitHub และคู่แข่งคือระบบนิเวศแบบเปิดและชุมชนนักพัฒนาที่ใหญ่ที่สุด GitHub โฮสต์ซอร์สโค้ดของ Android, Kubernetes, React, Swift, Kotlin และโปรเจกต์โอเพนซอร์สอื่นๆ อีกนับพัน ซึ่งทำให้แพลตฟอร์มนี้ไม่ใช่แค่เครื่องมือจัดเก็บโค้ด แต่ยังเป็นเครือข่ายสังคมสำหรับนักพัฒนา: คุณสามารถติดตามโปรเจกต์ อภิปรายการเปลี่ยนแปลง และมีส่วนร่วมผ่าน pull request
ตามรายงานของ Microsoft (2024) มี Pull Request ใหม่มากกว่า 10 ล้านรายการผ่าน GitHub ทุกวัน และจำนวนผู้ใช้ที่ใช้งานรายเดือนเกิน 100 ล้านคน แพลตฟอร์มรองรับภาษาการเขียนโปรแกรมมากกว่า 500 ภาษา การตรวจจับภาษาโดยอัตโนมัติตามนามสกุลไฟล์ และการเน้นไวยากรณ์โค้ด
ฟังก์ชันการทำงานของ GitHub ไปไกลกว่าแค่การโฮสต์ Git ทั่วไป แพลตฟอร์มนี้ให้บริการ: GitHub Actions — ระบบ CI/CD ในตัว; GitHub Packages — รีจิสทรีสำหรับแพ็กเกจและคอนเทนเนอร์; GitHub Codespaces — สภาพแวดล้อมการพัฒนาแบบคลาวด์บน VS Code; GitHub Discussions — ฟอรัมสำหรับชุมชน; GitHub Security — Dependabot สำหรับอัปเดต dependencies และสแกนช่องโหว่อัตโนมัติ; GitHub Copilot — ผู้ช่วย AI สำหรับเขียนโค้ด
สำหรับองค์กร GitHub มี GitHub Enterprise — เวอร์ชันองค์กรพร้อมโฮสต์ด้วยตนเอง (GitHub Enterprise Server) หรือ deployment แบบคลาวด์ (GitHub Enterprise Cloud) ฟีเจอร์สำหรับองค์กรรวมถึงการยืนยันตัวตน SAML/SSO การบันทึกตรวจสอบ นโยบายความปลอดภัยของ repository และ SLA การพร้อมใช้งาน 99.95% เวอร์ชัน Enterprise ถูกใช้โดยบริษัทอย่าง Google, Apple และ Airbnb
ฟีเจอร์สำคัญของ GitHub คือ GitHub CLI (gh) ซึ่งช่วยให้คุณดำเนินการทั้งหมดของแพลตฟอร์มจากบรรทัดคำสั่งโดยไม่ต้องใช้อินเทอร์เฟซเว็บ ด้วย gh คุณสามารถสร้าง repository จัดการ Issues ตรวจสอบ Pull Requests และเรียกใช้ Actions ได้โดยตรงจาก terminal ซึ่งช่วยเร่งงานของนักพัฒนาที่คุ้นเคยกับบรรทัดคำสั่ง
| ฟีเจอร์ | วัตถุประสงค์ | การใช้งาน |
|---|---|---|
| Actions | CI/CD และระบบอัตโนมัติ | ฟรี 2000 นาที/เดือน |
| Codespaces | IDE แบบคลาวด์บน VS Code | มีค่าใช้จ่าย 60 ชม./เดือนฟรี |
| Packages | โฮสต์แพ็กเกจและ Docker image | ฟรี 500 MB |
| Dependabot | อัปเดต dependencies อัตโนมัติ | ฟรีสำหรับ repo สาธารณะ |
| Pages | โฮสต์เว็บไซต์แบบคงที่ | ฟรี |
Pull Request (PR) เป็นกลไกหลักในการเปลี่ยนแปลงโปรเจกต์บน GitHub นักพัฒนาสร้าง branch พร้อมการเปลี่ยนแปลง เผยแพร่บน GitHub และส่งคำขอรวม (Pull Request) ไปยัง branch หลัก ผู้ร่วมโปรเจกต์คนอื่นๆ เห็นความแตกต่าง (diff) ระหว่าง branch สามารถแสดงความคิดเห็นในบรรทัดโค้ดเฉพาะ เสนอการเปลี่ยนแปลง และอนุมัติหรือปฏิเสธคำขอ
กระบวนการตรวจสอบโค้ดบน GitHub สร้างขึ้นรอบๆ PR ความคิดเห็นแต่ละรายการจะแนบไปกับบรรทัดเฉพาะใน diff และมีสามประเภท: Comment (ความคิดเห็นทั่วไป), Request Changes(ต้องการการแก้ไข) และ Approve(อนุมัติ) หลังจากทำการเปลี่ยนแปลง ผู้เขียนอัปเดต PR ด้วย commit ใหม่ และกระบวนการตรวจสอบจะทำซ้ำ เมื่อข้อกังวลทั้งหมดได้รับการแก้ไขและ PR ได้รับอนุมัติ การเปลี่ยนแปลงจะถูกรวมเข้ากับ branch เป้าหมาย
# สร้าง feature branch และ push
git checkout -b fix-login-bug
git add src/
git commit -m "Fix login validation error"
git push -u origin fix-login-bug
# สร้าง PR ผ่าน CLI
gh pr create --base main --title "Fix login validation" \
--body "Fixed edge case with empty email field"
# ดูและรวม PR
gh pr review --approve fix-login-bug
gh pr merge --squash fix-login-bug
GitHub รองรับ กฎการป้องกัน branch: คุณสามารถป้องกันการ push โดยตรงไปยัง main กำหนดจำนวนการอนุมัติที่จำเป็นก่อนการรวม เรียกใช้การตรวจสอบ Actions และกำหนดให้ branch เป็นปัจจุบันก่อนการรวม การป้องกัน branch ถูกกำหนดค่าใน Settings → Branches และเป็นแนวทางปฏิบัติที่จำเป็นสำหรับโปรเจกต์ใน production ป้องกันการนำโค้ดที่ไม่เสถียรเข้าสู่ branch หลักโดยไม่ตั้งใจ
GitHub Actions เป็นแพลตฟอร์ม CI/CD ในตัวที่ช่วยให้คุณทำงานเวิร์กโฟลว์อัตโนมัติได้โดยตรงใน repository เวิร์กโฟลว์ถูกอธิบายในไฟล์ YAML ที่อยู่ในไดเรกทอรี .github/workflows/ แต่ละเวิร์กโฟลว์ประกอบด้วยงานหนึ่งงานขึ้นไปที่ทำงานบน runners — เครื่องเสมือนที่มี Linux, Windows หรือ macOS
Actions รองรับ โมเดลที่ขับเคลื่อนด้วยเหตุการณ์: เวิร์กโฟลว์จะถูกเรียกใช้เมื่อ push, สร้าง PR, เผยแพร่ release, ตามกำหนดการ หรือผ่าน webhook ซึ่งช่วยให้คุณทำงาน build การทดสอบ การวิเคราะห์โค้ดแบบคงที่ การเผยแพร่ในร้านค้าแอป และการ deployment ไปยังเซิร์ฟเวอร์โดยอัตโนมัติโดยไม่ต้องมีนักพัฒนามีส่วนร่วม ด้านล่างเป็นตัวอย่างเวิร์กโฟลว์สำหรับโปรเจกต์ Android:
name: Android CI
on:
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
- name: Build with Gradle
run: ./gradlew assembleDebug
ระบบนิเวศ Actions รวม กว่า 20,000 การกระทำพร้อมใช้ ใน GitHub Marketplace การกระทำยอดนิยม: checkout (โคลน repository), setup-java/setup-node/setup-python (ตั้งค่าสภาพแวดล้อม), upload-artifact (บันทึก artifacts การ build), cache (แคช dependencies เพื่อความเร็ว), slack-notify (ส่งการแจ้งเตือนไปยัง Slack) Actions ยังรองรับ matrix build — การทำงานพร้อมกันบนหลายเวอร์ชันของ OS หรือภาษา
Issues เป็นระบบติดตามงานในตัวบน GitHub แต่ละ Issue มีหัวเรื่อง คำอธิบาย ป้ายกำกับ ผู้รับผิดชอบ เหตุการณ์สำคัญ และ Pull Requests ที่เชื่อมโยง Issues สามารถทำเป็นเทมเพลตได้ — เทมเพลตต่างๆ ถูกใช้สำหรับรายงานข้อบกพร่อง คำขอฟีเจอร์ หรือคำถาม ซึ่งจะถูกแทรกโดยอัตโนมัติเมื่อสร้าง
GitHub Projects (เดิม Projects Beta) เป็นเครื่องมือการจัดการโปรเจกต์บนบอร์ด คล้ายกับ Jira และ Trello Projects รองรับฟิลด์ที่กำหนดเอง (สถานะ ลำดับความสำคัญ sprint) การเชื่อมโยงกับ Issues และ Pull Requests การทำงานอัตโนมัติของการย้ายการ์ดเมื่อสถานะงานเปลี่ยน และการวิเคราะห์ในรูปแบบแผนภาพ burndown Projects มีให้ใช้งานในสองโหมด: Table(มุมมองตาราง) และ Board(บอร์ด kanban)
สำหรับการจัดการ release GitHub มี Milestones — กลุ่มของ Issues และ PR ที่รวมกันด้วยเป้าหมายร่วมกันพร้อมกำหนดเวลา แต่ละเหตุการณ์สำคัญแสดงความคืบหน้า: จำนวนงานที่เปิด จำนวนที่ปิด และว่ากำหนดเวลาถูกต้องหรือไม่ Milestones ผสานรวมกับ Releases — เมื่อเผยแพร่ release คุณสามารถเชื่อมโยงกับเหตุการณ์สำคัญและสร้าง CHANGELOG โดยอัตโนมัติตาม Issues ที่ ปิด
GitHub Pages คือโฮสต์ฟรีสำหรับเว็บไซต์แบบคงที่ที่เผยแพร่เนื้อหา repository โดยอัตโนมัติที่ https://username.github.io/repository Pages รองรับ HTML, CSS, JavaScript และตัวสร้างแบบคงที่: Jekyll (ในตัว), Hugo, Next.js (ส่งออก) และ MkDocs การกำหนดค่ารวมถึงการเลือก branch และไดเรกทอรีสำหรับการเผยแพร่ รวมถึงรองรับโดเมนที่กำหนดเอง
สำหรับเอกสารทางเทคนิค GitHub มี Wiki — ระบบวิกิในตัวที่จัดเก็บเป็น Git repository เช่นกัน Wiki รองรับ Markdown และอนุญาตให้แก้ไขหน้าผ่านอินเทอร์เฟซเว็บและในเครื่องผ่านการ push ไปยัง wiki repository แต่ละหน้า Wiki มีประวัติการเปลี่ยนแปลงของตัวเอง ซึ่งสะดวกสำหรับการจัดทำเอกสาร API สถาปัตยกรรม และกระบวนการของโปรเจกต์
การรวมกันของ GitHub Pages + Jekyll เป็นโซลูชันยอดนิยมสำหรับเว็บไซต์เอกสาร Jekyll แปลงไฟล์ Markdown เป็นหน้า HTML แบบคงที่โดยอัตโนมัติ รองรับธีม การนำทาง และการค้นหา ตัวอย่างเช่น เอกสาร Android Developers เคยใช้ Jekyll บน GitHub Pages และตอนนี้ใช้แพลตฟอร์มภายใน แต่โปรเจกต์โอเพนซอร์สหลายพันโปรเจกต์ยังคงใช้การรวมกันนี้สำหรับเว็บไซต์ของพวกเขา
GitHub CLI (gh) ช่วยให้คุณดำเนินการทั้งหมดของแพลตฟอร์มผ่านบรรทัดคำสั่ง: สร้าง repository จัดการ Issues ดูและอนุมัติ Pull Requests เรียกใช้ Actions คำสั่ง gh repo create my-project --public สร้าง repository ระยะไกลและเชื่อมโยงกับ repository ในเครื่อง ในขณะที่ gh pr create สร้าง Pull Request จาก branch ปัจจุบัน CLI ช่วยเร่งงานของนักพัฒนาที่ชอบ terminal มากกว่าอินเทอร์เฟซเว็บ
GitHub REST API และ GraphQL API ให้การเข้าถึงฟีเจอร์ทั้งหมดของแพลตฟอร์มผ่านโปรแกรม: การสร้าง Issue การจัดการผู้ใช้ การรับสถิติ และการจัดการ Actions GraphQL API เหมาะสำหรับคำสั่งที่ซับซ้อนเนื่องจากช่วยให้ดึงเฉพาะฟิลด์ที่ต้องการในคำขอเดียว อัตราจำกัดสำหรับ REST API คือ 5000 คำขอต่อชั่วโมงสำหรับผู้ใช้ที่ตรวจสอบสิทธิ์แล้ว API ถูกใช้อย่างแพร่หลายในการรวม GitHub กับ ระบบ CI ภายนอกและเครื่องมือ DevOps ภายใน
GitHub Gist เป็นบริการสำหรับเผยแพร่โค้ดชิ้นส่วนโดยไม่ต้องสร้าง repository ที่สมบูรณ์ Gist รองรับการเน้นไวยากรณ์ การฝังในเว็บไซต์ภายนอก และประวัติเวอร์ชัน Gist แต่ละรายการสามารถเป็นสาธารณะ (เห็นได้ในการค้นหา) หรือเป็นความลับ (เข้าถึงได้ผ่านลิงก์เท่านั้น) Gist ใช้สำหรับแชร์การกำหนดค่า บันทึก และตัวอย่างโค้ดอย่างรวดเร็วในการติดต่อในทีม และเป็นทางเลือกของ Pastebin สำหรับนักพัฒนา
คำถามที่พบบ่อย
GitHub เน้นชุมชนเปิดและฟีเจอร์ทางสังคม (forks, ดาว) GitLab มี CI/CD ในตัวที่ทรงพลังกว่าและโฮสต์แบบจัดการเองโดยไม่มีข้อจำกัดเรื่องนาที Actions
GitHub Team ราคา $4 ต่อผู้ใช้ต่อเดือน และให้ repository ส่วนตัวไม่จำกัด การป้องกัน branch และ Actions (3000 นาที) แผนฟรีเหมาะสำหรับโปรเจกต์โอเพนซอร์สขนาดเล็ก
เมื่อสร้าง repository ให้เลือก Private แทน Public ใน repository ส่วนตัว โค้ดจะมองเห็นได้เฉพาะผู้ร่วมงานที่ได้รับเชิญ ในแผนฟรี repository ส่วนตัวมีให้ใช้โดยจำกัดผู้ร่วมงานสูงสุด 3 คน
GitHub Copilot เป็นผู้ช่วย AI บนพื้นฐาน OpenAI Codex ที่ให้การเติมโค้ดอัตโนมัติแบบเรียลไทม์ ทำงานใน VS Code, JetBrains และ Neovim รองรับภาษาการเขียนโปรแกรมยอดนิยมทั้งหมด
ไปที่ Settings → Danger Zone → Delete this repository การลบไม่สามารถยกเลิกได้ — commit, Issues และ Wiki ทั้งหมดจะถูกลบโดยไม่สามารถ กู้คืน ได้ ตรวจสอบให้แน่ใจว่าคุณมีข้อมูลสำรองก่อน
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม