跳到主要内容

เนื้อหาภาษาไทย / 泰语内容

系统指南 内容已审核

การใช้ 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 承接企业级 Web Application、API Integration 以及政府/企业管理系统的设计与开发,并提供长期支持。

查看软件开发服务