Git คือเครื่องมือที่โปรแกรมเมอร์ทุกคนต้องใช้ ช่วยเก็บประวัติการแก้ไขโค้ด ย้อนกลับได้ และทำงานเป็นทีมโดยไม่ทับกัน ส่วน GitHub คือที่เก็บโค้ดออนไลน์ บทความนี้จะสอนตั้งแต่พื้นฐานจนใช้งานจริงเป็น
═══════════════════════════════════════
📌 1. Git และ GitHub คืออะไร
═══════════════════════════════════════
Git = ระบบควบคุมเวอร์ชัน (Version Control System)
ทำหน้าที่ "บันทึกประวัติ" ทุกการเปลี่ยนแปลงของโค้ด ทำงานบนเครื่องเรา
GitHub = บริการเก็บโปรเจกต์ Git ออนไลน์ (คลาวด์)
ใช้แชร์โค้ด ทำงานร่วมกับทีม และสำรองข้อมูล
เปรียบเทียบ:
• Git = กล้องบันทึกทุกการแก้ไข (ย้อนดู/ย้อนกลับได้)
• GitHub = คลังเก็บโค้ดออนไลน์ + พื้นที่ทำงานร่วมกัน
ประโยชน์:
• ย้อนกลับไปเวอร์ชันก่อนได้เมื่อทำพัง
• เห็นว่าใครแก้อะไร เมื่อไหร่
• ทำงานหลายคนพร้อมกันโดยไม่ทับกัน
═══════════════════════════════════════
⚙️ 2. ติดตั้งและตั้งค่าครั้งแรก
═══════════════════════════════════════
หลังติดตั้ง Git ให้ตั้งค่าชื่อและอีเมล (ทำครั้งเดียว)
git config --global user.name "ชื่อของคุณ"
git config --global user.email "you@example.com"
# ตรวจสอบเวอร์ชันและการตั้งค่า
git --version
git config --list
═══════════════════════════════════════
🚀 3. คำสั่งพื้นฐาน (วงจรการทำงาน)
═══════════════════════════════════════
เริ่มโปรเจกต์และบันทึกครั้งแรก
# สร้าง 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. ดูประวัติการเปลี่ยนแปลง
═══════════════════════════════════════
# ดูประวัติ commit ทั้งหมด
git log
# ดูแบบย่อบรรทัดเดียว
git log --oneline
# ดูความแตกต่างที่ยังไม่ได้ commit
git diff
═══════════════════════════════════════
🌿 5. Branch และ Merge — ทำงานแยกกิ่ง
═══════════════════════════════════════
Branch ให้เราสร้างฟีเจอร์ใหม่โดยไม่กระทบโค้ดหลัก
# สร้าง 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 และอัปโหลดโค้ด
# เชื่อมกับ 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 ให้ข้ามไฟล์บางอย่าง
# ตัวอย่างเนื้อหาในไฟล์ .gitignore
node_modules/
vendor/
.env
*.log
.DS_Store
*** สำคัญ: อย่า commit ไฟล์รหัสผ่าน/ความลับ เช่น .env ขึ้น GitHub เด็ดขาด ***
═══════════════════════════════════════
🔄 8. Workflow ที่ใช้จริงในแต่ละวัน
═══════════════════════════════════════
# 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 ช่วยชีวิตคุณตอนโค้ดพัง — ฝึกใช้ให้คล่องตั้งแต่วันนี้ 💾