การใช้ Version Control: Git เบื้องต้น
ในบทที่แล้ว เราได้เรียนรู้เกี่ยวกับการใช้ Composer เพื่อจัดการ Dependencies ของโปรเจกต์ PHP ของเรา ในบทนี้ เราจะมาเรียนรู้เกี่ยวกับการใช้ Version Control ด้วย Git ซึ่งเป็นเครื่องมือที่สำคัญอย่างยิ่งสำหรับการจัดการ Source Code ของโปรเจกต์ของเรา ไม่ว่าโปรเจกต์นั้นจะมีขนาดเล็กหรือใหญ่ก็ตาม Git จะช่วยให้เราสามารถติดตามการเปลี่ยนแปลง, ทำงานร่วมกับผู้อื่นได้อย่างมีประสิทธิภาพ, และย้อนกลับไปยังเวอร์ชันก่อนหน้าได้หากเกิดข้อผิดพลาด
Git คืออะไร?
Git คือระบบ Version Control แบบ Distributed (DVCS) ที่ช่วยให้เราสามารถติดตามการเปลี่ยนแปลงของไฟล์ต่างๆ ในโปรเจกต์ของเราได้ ไม่ว่าจะเป็นไฟล์ Source Code, เอกสาร, หรือไฟล์อื่นๆ ที่เกี่ยวข้องกับโปรเจกต์ Git จะเก็บประวัติการเปลี่ยนแปลงทั้งหมดไว้ ทำให้เราสามารถย้อนกลับไปยังเวอร์ชันก่อนหน้า, เปรียบเทียบความแตกต่างระหว่างเวอร์ชัน, และทำงานร่วมกับผู้อื่นได้อย่างมีประสิทธิภาพ
ทำไมต้องใช้ Git?
- ติดตามการเปลี่ยนแปลง: Git ช่วยให้เราเห็นภาพรวมของการเปลี่ยนแปลงทั้งหมดในโปรเจกต์ของเรา
- ทำงานร่วมกัน: Git ช่วยให้ทีมงานสามารถทำงานร่วมกันได้อย่างราบรื่น โดยไม่เกิดปัญหาการทับซ้อนของโค้ด
- ย้อนกลับเวอร์ชัน: หากเกิดข้อผิดพลาด เราสามารถย้อนกลับไปยังเวอร์ชันก่อนหน้าได้อย่างง่ายดาย
- สำรองข้อมูล: Git ทำหน้าที่เป็นระบบสำรองข้อมูล Source Code ของเรา
การติดตั้ง Git
ก่อนที่เราจะเริ่มใช้งาน Git ได้ เราต้องทำการติดตั้ง Git ลงในเครื่องของเราก่อน วิธีการติดตั้งจะแตกต่างกันไปขึ้นอยู่กับระบบปฏิบัติการที่เราใช้งาน
Windows:
ดาวน์โหลด Git for Windows ได้จาก https://git-scm.com/download/win และทำการติดตั้งตามขั้นตอน
macOS:
สามารถติดตั้ง Git ผ่าน Homebrew โดยใช้คำสั่ง:
brew install git
หรือดาวน์โหลด Git for macOS ได้จาก https://git-scm.com/download/mac
Linux:
บน Debian/Ubuntu:
sudo apt update
sudo apt install git
บน Fedora/CentOS:
sudo dnf install git
หลังจากติดตั้งเสร็จแล้ว ให้ตรวจสอบว่า Git ถูกติดตั้งอย่างถูกต้องโดยการเปิด Terminal หรือ Command Prompt แล้วพิมพ์คำสั่ง:
git --version
หาก Git ถูกติดตั้งอย่างถูกต้อง จะแสดงเวอร์ชันของ Git ที่ติดตั้ง
การตั้งค่า Git
หลังจากติดตั้ง Git แล้ว เราต้องทำการตั้งค่า Git เพื่อระบุชื่อและอีเมลของเรา ซึ่ง Git จะใช้ข้อมูลเหล่านี้ในการระบุตัวตนของผู้ที่ทำการ Commit
เปิด Terminal หรือ Command Prompt แล้วพิมพ์คำสั่ง:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
แทนที่ "Your Name" ด้วยชื่อของคุณ และ "[email protected]" ด้วยอีเมลของคุณ
การสร้าง Repository
Repository (หรือ Repo) คือที่เก็บไฟล์และประวัติการเปลี่ยนแปลงของโปรเจกต์ของเรา ในการเริ่มต้นใช้งาน Git เราต้องสร้าง Repository ก่อน
มีสองวิธีในการสร้าง Repository:
- สร้าง Repository ใหม่: สำหรับโปรเจกต์ใหม่ที่เรายังไม่ได้ใช้ Git
- Clone Repository ที่มีอยู่: สำหรับโปรเจกต์ที่เราต้องการทำงานร่วมกับผู้อื่น หรือโปรเจกต์ที่เราได้สร้างไว้ก่อนหน้านี้
1. สร้าง Repository ใหม่
ไปที่ Directory ของโปรเจกต์ของคุณใน Terminal หรือ Command Prompt แล้วพิมพ์คำสั่ง:
git init
คำสั่งนี้จะสร้าง Directory ชื่อ .git ใน Directory ของโปรเจกต์ของเรา ซึ่งเป็นที่เก็บข้อมูลของ Git
2. Clone Repository ที่มีอยู่
หากเราต้องการ Clone Repository ที่มีอยู่ (เช่น จาก GitHub, GitLab, หรือ Bitbucket) ให้พิมพ์คำสั่ง:
git clone <repository_url>
แทนที่ <repository_url> ด้วย URL ของ Repository ที่เราต้องการ Clone เช่น:
git clone https://github.com/your_username/your_repository.git
คำสั่งนี้จะสร้าง Directory ที่มีชื่อเดียวกับ Repository และดาวน์โหลดไฟล์ทั้งหมดจาก Repository นั้นมาไว้ในเครื่องของเรา
การ Commit และ Push
หลังจากที่เราได้ทำการเปลี่ยนแปลงไฟล์ในโปรเจกต์ของเราแล้ว เราต้องทำการ Commit เพื่อบันทึกการเปลี่ยนแปลงเหล่านั้นลงใน Git
ขั้นตอนการ Commit:
- Staging: เพิ่มไฟล์ที่เราต้องการ Commit ไปยัง Staging Area โดยใช้คำสั่ง:
- Commit: บันทึกการเปลี่ยนแปลงไปยัง Local Repository โดยใช้คำสั่ง:
git add <file_name>
หรือหากต้องการเพิ่มไฟล์ทั้งหมดที่เปลี่ยนแปลง ให้ใช้คำสั่ง:
git add .
git commit -m "Your commit message"
แทนที่ "Your commit message" ด้วยข้อความที่อธิบายการเปลี่ยนแปลงที่เราได้ทำ
ตัวอย่าง:
สมมติว่าเราได้แก้ไขไฟล์ index.php และต้องการ Commit การเปลี่ยนแปลงนั้น ให้ทำตามขั้นตอนดังนี้:
git add index.php
git commit -m "แก้ไขไฟล์ index.php เพิ่ม Header"
หลังจากที่เราได้ Commit การเปลี่ยนแปลงไปยัง Local Repository แล้ว เราต้องทำการ Push เพื่อส่งการเปลี่ยนแปลงเหล่านั้นไปยัง Remote Repository (เช่น GitHub, GitLab, หรือ Bitbucket) โดยใช้คำสั่ง:
git push origin main
ในที่นี้ origin คือชื่อของ Remote Repository และ main คือชื่อของ Branch ที่เราต้องการ Push (โดยปกติ Branch หลักจะชื่อ main หรือ master)
ข้อผิดพลาดที่พบบ่อย:
- ลืม Add ไฟล์: หากเราทำการเปลี่ยนแปลงไฟล์แล้วลืม Add ไฟล์ก่อนที่จะ Commit การเปลี่ยนแปลงนั้นจะไม่ถูกบันทึก
- ไม่ได้ตั้งค่า Remote Repository: หากเรายังไม่ได้ตั้งค่า Remote Repository เราจะไม่สามารถ Push การเปลี่ยนแปลงได้ (การตั้งค่า Remote Repository จะถูกกล่าวถึงในบทความถัดไป)
- Conflict: หากมีผู้อื่นทำการเปลี่ยนแปลงไฟล์เดียวกันกับเรา และ Push การเปลี่ยนแปลงนั้นมาก่อน เราอาจจะเจอปัญหา Conflict ซึ่งเราต้องทำการแก้ไข Conflict ก่อนที่จะ Push การเปลี่ยนแปลงของเราได้ (การแก้ไข Conflict จะถูกกล่าวถึงในบทความถัดไป)
สรุป
ในบทนี้ เราได้เรียนรู้เกี่ยวกับพื้นฐานของการใช้ Git ในการจัดการ Source Code เราได้เรียนรู้ว่า Git คืออะไร, ทำไมต้องใช้ Git, วิธีการติดตั้ง Git, การสร้าง Repository, และการ Commit และ Push การเปลี่ยนแปลง ในบทถัดไป เราจะมาเรียนรู้เกี่ยวกับการใช้ Branching ซึ่งเป็นอีกหนึ่ง Feature ที่สำคัญของ Git ที่จะช่วยให้เราสามารถทำงานกับ Feature ใหม่ๆ หรือแก้ไข Bug ได้อย่างมีประสิทธิภาพโดยไม่กระทบกับ Code หลักของโปรเจกต์