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 ช่วยชีวิตคุณตอนโค้ดพัง — ฝึกใช้ให้คล่องตั้งแต่วันนี้ 💾