본문으로 건너뛰기

เนื้อหาภาษาไทย / 태국어 콘텐츠

시스템 가이드 검수 완료된 콘텐츠

การใช้ Git สำหรับ Version Control

บทความนี้เป็นการแนะนำ Git ซึ่งเป็นระบบ Version Control ที่ได้รับความนิยม โดยอธิบายถึงหลักการทำงาน, ข้อดี, คำสั่งพื้นฐาน, การ Commit อย่างมีประสิทธิภาพ, การใช้ B...

การใช้ Git สำหรับ Version Control

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

Git คืออะไร?

Git คือระบบ Version Control แบบ Distributed (DVCS) นั่นหมายความว่าทุกคนที่ทำงานในโปรเจ็กต์จะมีสำเนาของ repository ทั้งหมดบนเครื่องของตัวเอง ซึ่งแตกต่างจากระบบ Version Control แบบ Centralized ที่ต้องเชื่อมต่อกับ Server กลางตลอดเวลา

ข้อดีของ Git:

  • ความเร็ว: การทำงานส่วนใหญ่อยู่บนเครื่องของคุณเอง ทำให้รวดเร็ว
  • ความยืดหยุ่น: รองรับการทำงานแบบ Branching และ Merging ได้อย่างมีประสิทธิภาพ
  • ความปลอดภัย: ข้อมูลถูกสำรองไว้ในหลายที่ (ทุกเครื่องที่มี repository)
  • การทำงานแบบ Offline: สามารถทำงานได้แม้ไม่มีการเชื่อมต่ออินเทอร์เน็ต
  • Collaboration: ช่วยให้การทำงานร่วมกันเป็นทีมง่ายขึ้น

Git Basics: คำสั่งพื้นฐานที่ควรรู้

ก่อนที่จะเริ่มใช้งาน Git อย่างจริงจัง เรามาทำความเข้าใจคำสั่งพื้นฐานที่จำเป็นกันก่อน:

  1. git init: สร้าง Git repository ใหม่ในโฟลเดอร์ปัจจุบัน
  2. git clone: คัดลอก Git repository จาก remote repository (เช่น GitHub) มายังเครื่องของคุณ
  3. git add: เพิ่มไฟล์หรือโฟลเดอร์ไปยัง Staging Area (พื้นที่เตรียม commit)
  4. git commit: บันทึกการเปลี่ยนแปลงจาก Staging Area ไปยัง Local Repository พร้อมข้อความอธิบาย (commit message)
  5. git status: แสดงสถานะของไฟล์ใน Working Directory และ Staging Area
  6. git diff: แสดงความแตกต่างระหว่างไฟล์ใน Working Directory กับ Staging Area หรือ Local Repository
  7. git log: แสดงประวัติการ commit ทั้งหมด
  8. git pull: ดึงข้อมูลล่าสุดจาก Remote Repository มายัง Local Repository
  9. git push: ส่งข้อมูลจาก Local Repository ไปยัง Remote Repository

ตัวอย่างการใช้งาน Git

สมมติว่าเรามีโปรเจ็กต์ PHP ที่ชื่อว่า `my-project` เราจะเริ่มต้นใช้งาน Git ได้ดังนี้:

# สร้างโฟลเดอร์โปรเจ็กต์
mkdir my-project
cd my-project

# สร้าง Git repository ใหม่
git init

# สร้างไฟล์ index.php
touch index.php

# เพิ่มไฟล์ index.php ไปยัง Staging Area
git add index.php

# Commit การเปลี่ยนแปลง
git commit -m "Initial commit: Create index.php"

# ตรวจสอบสถานะ
git status

คำอธิบาย:

  • `git init` จะสร้างโฟลเดอร์ `.git` ซึ่งเป็นที่เก็บข้อมูลของ Git
  • `git add index.php` จะบอก Git ว่าเราต้องการติดตามการเปลี่ยนแปลงของไฟล์ `index.php`
  • `git commit -m "Initial commit: Create index.php"` จะบันทึกการเปลี่ยนแปลงพร้อมข้อความอธิบายที่สื่อความหมาย
  • `git status` จะแสดงว่าไม่มีอะไรให้ commit อีกแล้ว (working tree clean)

Committing Changes: การบันทึกการเปลี่ยนแปลง

การ Commit คือการบันทึกการเปลี่ยนแปลงที่เราทำใน Working Directory ไปยัง Local Repository การ Commit แต่ละครั้งควรเป็นการเปลี่ยนแปลงที่มีความหมายและเกี่ยวข้องกับเรื่องเดียวกัน

แนวปฏิบัติที่ดีสำหรับการ Commit:

  • Commit บ่อยๆ: Commit การเปลี่ยนแปลงเล็กๆ น้อยๆ บ่อยๆ จะช่วยให้ง่ายต่อการแก้ไขข้อผิดพลาดและการ Rollback
  • เขียน Commit Message ที่ดี: Commit Message ควรสื่อความหมาย ชัดเจน และบอกว่า Commit นี้ทำอะไร (Why is this commit important?)
  • Commit เฉพาะสิ่งที่เกี่ยวข้อง: อย่า Commit ไฟล์ที่ไม่เกี่ยวข้องกับ Feature หรือ Bug Fix นั้นๆ

ตัวอย่าง Commit Message ที่ดี:

feat: Add user authentication

This commit implements user authentication using bcrypt for password hashing.
It also includes a login form and a registration form.

การแก้ไข Commit Message ล่าสุด:

git commit --amend -m "New commit message"

ข้อควรระวัง: การแก้ไข Commit Message ที่ถูก Push ไปยัง Remote Repository แล้ว อาจทำให้เกิดปัญหาได้ ควรหลีกเลี่ยงหากไม่จำเป็น

Branching and Merging: การแตกกิ่งและการรวมกิ่ง

Branching คือการสร้างสำเนาของโค้ดจากจุดหนึ่งในประวัติการ Commit เพื่อพัฒนา Feature ใหม่ หรือแก้ไข Bug โดยไม่กระทบกับโค้ดหลัก (Main Branch หรือ `main`/`master` branch)

ประโยชน์ของการใช้ Branch:

  • การพัฒนา Feature คู่ขนาน: สามารถพัฒนาหลาย Feature พร้อมกันได้ โดยไม่รบกวนกัน
  • การแก้ไข Bug อย่างปลอดภัย: สามารถแก้ไข Bug ใน Branch แยก โดยไม่กระทบกับโค้ดหลักที่ใช้งานอยู่
  • การทดลอง: สามารถทดลองไอเดียใหม่ๆ โดยไม่ต้องกลัวว่าจะทำให้โค้ดหลักเสียหาย

คำสั่งที่เกี่ยวข้องกับ Branching:

  • git branch: แสดงรายการ Branch ทั้งหมด หรือสร้าง Branch ใหม่
  • git checkout: สลับไปยัง Branch ที่ต้องการ
  • git merge: รวม Branch หนึ่งเข้ากับอีก Branch หนึ่ง
  • git branch -d: ลบ Branch (หลังจาก Merge แล้ว)

ตัวอย่างการใช้งาน Branching

สมมติว่าเราต้องการพัฒนา Feature ใหม่ที่ชื่อว่า "Add Contact Form" เราจะสร้าง Branch ใหม่และทำงานบน Branch นั้น:

# สร้าง Branch ใหม่ชื่อ "add-contact-form"
git branch add-contact-form

# สลับไปยัง Branch "add-contact-form"
git checkout add-contact-form

# หรือใช้คำสั่งเดียว
git checkout -b add-contact-form

# ทำงานบน Branch "add-contact-form" ...
# แก้ไขไฟล์ สร้างไฟล์ใหม่

# เพิ่มและ Commit การเปลี่ยนแปลง
git add .
git commit -m "feat: Implement contact form"

# สลับกลับไปยัง Main Branch (สมมติว่าเป็น "main")
git checkout main

# รวม Branch "add-contact-form" เข้ากับ Main Branch
git merge add-contact-form

# ลบ Branch "add-contact-form" (หลังจาก Merge เรียบร้อยแล้ว)
git branch -d add-contact-form

Git Merge vs. Git Rebase:

ทั้ง `git merge` และ `git rebase` ใช้สำหรับรวมการเปลี่ยนแปลงจาก Branch หนึ่งเข้ากับอีก Branch หนึ่ง แต่มีวิธีการทำงานที่แตกต่างกัน:

  • Git Merge: สร้าง Commit ใหม่ (Merge Commit) ที่รวมการเปลี่ยนแปลงจากทั้งสอง Branch เข้าด้วยกัน ทำให้ประวัติการ Commit เป็นแบบ Tree-like
  • Git Rebase: ย้าย Commit ของ Branch หนึ่งไปต่อท้าย Commit ของอีก Branch หนึ่ง ทำให้ประวัติการ Commit เป็นเส้นตรง (Linear History)

Trade-offs:

  • Merge: รักษาประวัติการ Branching ที่ชัดเจน แต่ประวัติการ Commit อาจจะซับซ้อน
  • Rebase: ทำให้ประวัติการ Commit สะอาดและอ่านง่าย แต่ข้อมูลการ Branching อาจหายไป

ข้อแนะนำ: โดยทั่วไปแล้ว ควรใช้ `git merge` สำหรับการรวม Feature Branch เข้ากับ Main Branch และใช้ `git rebase` สำหรับการ Update Feature Branch ให้ทันสมัยกับ Main Branch (ก่อนที่จะ Merge)

Remote Repository: GitHub, GitLab, Bitbucket

Remote Repository คือ Repository ที่อยู่บน Server และใช้สำหรับการ Collaboration กับผู้อื่น ตัวอย่าง Remote Repository ที่นิยมใช้กันคือ GitHub, GitLab และ Bitbucket

คำสั่งที่เกี่ยวข้องกับ Remote Repository:

  • git remote add: เพิ่ม Remote Repository
  • git remote -v: แสดงรายการ Remote Repository
  • git fetch: ดึงข้อมูลจาก Remote Repository โดยไม่รวมเข้ากับ Local Branch
  • git pull: ดึงข้อมูลจาก Remote Repository และรวมเข้ากับ Local Branch
  • git push: ส่งข้อมูลจาก Local Repository ไปยัง Remote Repository

ตัวอย่างการใช้งาน Remote Repository

สมมติว่าเราต้องการ Push โค้ดจาก Local Repository ไปยัง GitHub Repository:

# เพิ่ม Remote Repository (เปลี่ยน <username> และ <repository> เป็นชื่อของคุณ)
git remote add origin git@github.com:<username>/<repository>.git

# Push Branch "main" ไปยัง Remote Repository
git push -u origin main

คำอธิบาย:

  • `git remote add origin git@github.com:/.git` จะเพิ่ม Remote Repository ที่ชื่อว่า "origin"
  • `git push -u origin main` จะ Push Branch "main" ไปยัง Remote Repository "origin" และตั้งค่าให้ Track Branch นี้

สรุป

Git เป็นเครื่องมือที่ทรงพลังสำหรับการจัดการโค้ดและการทำงานร่วมกัน การเรียนรู้ Git Basics, Committing Changes, Branching และ Merging จะช่วยให้คุณทำงานได้อย่างมีประสิทธิภาพและเป็นระบบมากยิ่งขึ้น ในบทเรียนต่อไป เราจะพูดถึงการ Deploy PHP Application ซึ่งเป็นขั้นตอนสำคัญในการนำ Application ของเราไปใช้งานจริง

Office.in.th Custom Service

이 구조를 바탕으로 시스템을 개발하거나 맞춤 변경하고 싶으신가요?

Office.in.th는 엔터프라이즈 웹 애플리케이션, API 연동, 공공/민간 업무 관리 시스템을 설계·개발하며 장기 지원을 제공합니다.

소프트웨어 개발 서비스 보기