Git คือเครื่องมือที่โปรแกรมเมอร์ทุกคนต้องใช้ ช่วยเก็บประวัติการแก้ไขโค้ด ย้อนกลับได้ และทำงานเป็นทีมโดยไม่ทับกัน ส่วน GitHub คือที่เก็บโค้ดออนไลน์ บทความนี้จะสอนตั้งแต่พื้นฐานจนใช้งานจริงเป็น ═══════════════════════════════════════ 📌 1. Git และ GitHub คืออะไร ═══════════════════════════════════════ Git = ระบบควบคุมเวอร์ชัน (Version Control System) ทำหน้าที่ "บันทึกประวัติ" ทุกการเปลี่ยนแปลงของโค้ด ทำงานบนเครื่องเรา GitHub = บริการเก็บโปรเจกต์ Git ออนไลน์ (คลาวด์) ใช้แชร์โค้ด ทำงานร่วมกับทีม และสำรองข้อมูล เปรียบเทียบ: • Git = กล้องบันทึกทุกการแก้ไข (ย้อนดู/ย้อนกลับได้) • GitHub = คลังเก็บโค้ดออนไลน์ + พื้นที่ทำงานร่วมกัน ประโยชน์: • ย้อนกลับไปเวอร์ชันก่อนได้เมื่อทำพัง • เห็นว่าใครแก้อะไร เมื่อไหร่ • ทำงานหลายคนพร้อมกันโดยไม่ทับกัน ═══════════════════════════════════════ ⚙️ 2. ติดตั้งและตั้งค่าครั้งแรก ═══════════════════════════════════════ หลังติดตั้ง Git ให้ตั้งค่าชื่อและอีเมล (ทำครั้งเดียว)
bash
git config --global user.name "ชื่อของคุณ"
git config --global user.email "you@example.com"

# ตรวจสอบเวอร์ชันและการตั้งค่า
git --version
git config --list
═══════════════════════════════════════ 🚀 3. คำสั่งพื้นฐาน (วงจรการทำงาน) ═══════════════════════════════════════ เริ่มโปรเจกต์และบันทึกครั้งแรก
bash
# สร้าง Git repository ในโฟลเดอร์ปัจจุบัน
git init

# ดูสถานะไฟล์ (อะไรเปลี่ยนบ้าง)
git status

# เพิ่มไฟล์เข้าคิวเตรียมบันทึก (staging)
git add index.html        # ไฟล์เดียว
git add .                  # ทุกไฟล์

# บันทึกการเปลี่ยนแปลง (commit) พร้อมข้อความ
git commit -m "เพิ่มหน้าแรกของเว็บ"
3 สถานะของไฟล์ใน Git: • Working Directory → ไฟล์ที่กำลังแก้ • Staging Area → ไฟล์ที่ git add แล้ว (รอ commit) • Repository → ไฟล์ที่ commit แล้ว (บันทึกถาวร) ═══════════════════════════════════════ 📜 4. ดูประวัติการเปลี่ยนแปลง ═══════════════════════════════════════
bash
# ดูประวัติ commit ทั้งหมด
git log

# ดูแบบย่อบรรทัดเดียว
git log --oneline

# ดูความแตกต่างที่ยังไม่ได้ commit
git diff
═══════════════════════════════════════ 🌿 5. Branch และ Merge — ทำงานแยกกิ่ง ═══════════════════════════════════════ Branch ให้เราสร้างฟีเจอร์ใหม่โดยไม่กระทบโค้ดหลัก
bash
# สร้าง branch ใหม่และสลับไปทันที
git checkout -b feature-login

# ดู branch ทั้งหมด
git branch

# สลับกลับไป branch หลัก
git checkout main

# รวม branch feature-login เข้ากับ main
git merge feature-login

# ลบ branch ที่ไม่ใช้แล้ว
git branch -d feature-login
═══════════════════════════════════════ ☁️ 6. ทำงานกับ GitHub (Remote) ═══════════════════════════════════════ เชื่อมโปรเจกต์เข้ากับ GitHub และอัปโหลดโค้ด
bash
# เชื่อมกับ repository บน GitHub
git remote add origin https://github.com/username/repo.git

# อัปโหลด (push) ขึ้น GitHub ครั้งแรก
git push -u origin main

# ครั้งต่อไปแค่
git push

# ดึงโค้ดล่าสุดจาก GitHub ลงมา
git pull

# ก๊อปปี้โปรเจกต์จาก GitHub ลงเครื่อง
git clone https://github.com/username/repo.git
═══════════════════════════════════════ 🚫 7. .gitignore — ไฟล์ที่ไม่ต้องการติดตาม ═══════════════════════════════════════ สร้างไฟล์ชื่อ .gitignore เพื่อบอก Git ให้ข้ามไฟล์บางอย่าง
bash
# ตัวอย่างเนื้อหาในไฟล์ .gitignore
node_modules/
vendor/
.env
*.log
.DS_Store
*** สำคัญ: อย่า commit ไฟล์รหัสผ่าน/ความลับ เช่น .env ขึ้น GitHub เด็ดขาด *** ═══════════════════════════════════════ 🔄 8. Workflow ที่ใช้จริงในแต่ละวัน ═══════════════════════════════════════
bash
# 1. ดึงโค้ดล่าสุดก่อนเริ่มงาน
git pull

# 2. สร้าง branch สำหรับงานใหม่
git checkout -b fix-bug-123

# 3. แก้โค้ด แล้วบันทึก
git add .
git commit -m "แก้บั๊กหน้า login"

# 4. อัปโหลดขึ้น GitHub
git push -u origin fix-bug-123

# 5. เปิด Pull Request บนเว็บ GitHub เพื่อรวมเข้า main
═══════════════════════════════════════ 📋 9. สรุปคำสั่งที่ใช้บ่อย ═══════════════════════════════════════ • git init → เริ่ม repository • git status → ดูสถานะไฟล์ • git add . → เพิ่มไฟล์เข้า staging • git commit -m "..." → บันทึก • git log --oneline → ดูประวัติแบบย่อ • git branch → ดู/จัดการ branch • git checkout -b ... → สร้าง+สลับ branch • git merge ... → รวม branch • git push / git pull → ส่งขึ้น/ดึงลง GitHub • git clone ... → ก๊อปโปรเจกต์ ═══════════════════════════════════════ ✅ 10. สรุป ═══════════════════════════════════════ • Git บันทึกประวัติในเครื่อง, GitHub เก็บออนไลน์และแชร์ได้ • วงจรหลัก: แก้ไข → add → commit → push • ใช้ branch แยกงานเสมอ อย่าแก้ตรง main • commit บ่อย ๆ พร้อมข้อความสื่อความหมาย • pull ก่อนเริ่มงานทุกครั้งเมื่อทำงานเป็นทีม จำไว้: Git ช่วยชีวิตคุณตอนโค้ดพัง — ฝึกใช้ให้คล่องตั้งแต่วันนี้ 💾