Git คืออะไรวะ? ตำนานเล่าว่า… 🙈🙈
🚩ทำไมต้องมี Git เพื่อทำ Version Control ?!
เเน่นอนจากที่จอมเวทย์ผู้ยิ่งใหญ่ ลีนัส ทอร์วัลด์ส (Linus Torvalds) ได้กล่าวมาเบื้องต้น!!! การเขียนโค้ดไม่ใช่เรื่องง่ายเสมอไป บางทีต้องแก้ไขหลายรอบ เพิ่มฟีเจอร์ใหม่ๆ หรือมีหลายคนทำงานร่วมกัน การมี Version Control ในระบบจึงจำเป็นเปรียบดั่งสงครามต้องมียุทธวิธีที่แน่นอน Git จึงเป็นนินจาผู้พิทักษ์แผ่นดิน 🥷🥷โค้ดที่จะคอยจดบันทึก ควบคุม และประสานงานการเปลี่ยนแปลงทุกอย่าง ไม่ว่าจะเป็นการแก้ไขเล็กๆ น้อยๆ หรือการปฏิวัติครั้งยิ่งใหญ่ไปจนถึงการรวมกำลังกับเหล่านินจาคนอื่นๆ
🚩การติดตั้ง Git อย่างไม่ตายแน่!
เตรียมตัวให้พร้อม จงเปิดเว็บไซต์ https://git-scm.com แล้วคลิกปุ่มดาวน์โหลดสำหรับระบบปฏิบัติการของคุณไม่ว่าจะเป็น Windows หรือ ผู้ใช้ macOS และ Linux แล้วติดตั้งไปเถอะ! หากติดปัญหาอาจต้องร่ายมนต์คาถาบ้าง แต่ไม่ต้องห่วง มีกูรูให้ความช่วยเหลืออยู่เสมอ 🕵🎓
# เข้าไปดูในเว็บนี้ได้เลย https://git-scm.com/download/linux
apt-get install git
git config --global user.name "ชื่อที่ใช้"
git config --global user.email "อีเมลที่ใช้"
🚩เคล็ดไม่ลับ: พื้นฐานการงัดงำ Git
Git Repository ดั่งมาราธอน 🏃🏃
Git repository เปรียบเสมือนสนามแข่งวิ่งมาราธอนที่เต็มไปด้วยโค้ด เราสามารถเริ่มต้นโครงการใหม่ได้ด้วยการสร้างรีโพขึ้นมา หรือนำรีโพของผู้อื่นมาเป็นจุดเริ่มต้น
# คำสั่งสร้าง git repository ใหม่
git init
โดย Git Repository ประกอบด้วยส่วนหลักๆได้เเก่
repo/ | |-- .git/ | |-- working-directory/ |-- files
repo/
คือ รูทโฟลเดอร์ของ Git Repository ทั้งหมด.git/
เป็นโฟลเดอร์ซ่อนที่เก็บข้อมูลสำคัญทั้งหมดที่จำเป็นสำหรับการทำงานของ Git ไม่ควรแก้ไขหรือลบโดยตรงworking-directory/
เป็นโฟลเดอร์ที่คุณจะทำงานกับไฟล์โค้ด สร้างไฟล์ใหม่ แก้ไขไฟล์ หรือลบไฟล์ออกไปfiles
คือไฟล์งานต่างๆ ที่คุณสร้างขึ้นมาในโครงการ ซึ่งอยู่ภายใต้working-directory/
ถ้าจะให้เปรียบเทียบให้เห็นง๊ายง่ายก็คือ……
โรงซ่อมของปราชญ์ผมขาว | |-- ห้องพัก (ห้องปรึกษาลับของนินจา) | |-- สนามซ้อมรบ |-- ทหารรับจ้าง (ไฟล์ต่างๆ)
โรงซ่อมของปราชญ์ผมขาว
คือ repository หรือสถานที่ที่ปราชญ์ผมขาวสอนลูกศิษย์วิชาการรบของนินจาห้องพัก
หรือ.git/
คือห้องลับที่เก็บความลับของนินจา ไม่มีใครควรสอดส่ายเข้าไปในนั้นนอกจากปราชญ์ผู้ทรงภูมิสนามซ้อมรบ
หรือworking-directory/
คือสนามที่ลูกศิษย์จะมาซ้อมและปฏิบัติการต่างๆ กับทหารรับจ้างของตนทหารรับจ้าง
หรือfiles
คือไฟล์โค้ดต่างๆ ที่ลูกศิษย์นั้นพัฒนาขึ้นมา ซึ่งเปรียบเสมือนทหารรับจ้างที่จะไปสู้รบในสนามแห่งโค้ด
Git Commit ท่าซามูไร ⚡⚡
Commit เปรียบเสมือนการตัดสินใจที่เด็ดเดี่ยวของซามูไรในการจารึกการเปลี่ยนแปลงโค้ดลงในประวัติศาสตร์ หลังจากเพิ่มหรือแก้ไขไฟล์ เราต้อง commit เพื่อบันทึกสิ่งที่ทำลงใน Git เสมอ
# เพิ่มไฟล์เข้าสู่ staging area
git add file1.py file2.js
# commit การเปลี่ยนแปลง
git commit -m "สร้างไฟล์ใหม่สำหรับฟีเจอร์ A"
Git Branch ละลานตาเหมือนงูเห่า 🐍🐍
การสร้างบรานช์ก็เปรียบเสมือนการแยกย้ายของงูเห่ามหาภัยที่โหดร้ายไปสู่ทิศทางใหม่ๆ บนเส้นทางการพัฒนา เราสามารถสร้างบรานช์เพื่อทำงานบนฟีเจอร์ใหม่โดยไม่กระทบต่อแนวหลัก
# สร้างบรานช์ใหม่
git branch feature/new-feature
# สลับไปทำงานบนบรานช์ใหม่
git checkout feature/new-feature
Git Merge รวมพละกำลังอ๋องซ่าส์ 👨💻👨💻
ในบางครั้งเราต้องนำพลังสองบรานช์มารวมกัน นั่นคือการ merge ซึ่งเปรียบได้กับการรวมกองกำลังของสองกระบวนทัพเพื่อเข้าสู่ศึกแห่งโค้ด
# merge บรานช์ feature/new-feature กลับสู่ master
git checkout master
git merge feature/new-feature
🚩Git กึ๋นสนั่นกับคำสั่งบ้าบิ่น
Git Clone คลอนตัวเป็นฝา 👾👾
Cloning เปรียบได้กับพรานป่าที่คลอนแคลนตัวไปสร้างบ้านใหม่ในรีโพจากที่อื่น ด้วยคำสั่งนี้เราจะได้สำเนาโครงการทั้งหมดมาไว้ที่เครื่องของเรา
# clone โครงการมาจาก remote repository
git clone https://github.com/user/repo.git
Git Pull ดึงร้อยดึงพัน💭💭
การดึงเอาการเปลี่ยนแปลงของโครงการจากที่อื่นๆ มารวมกับโครงการของเราด้วยคำสั่ง pull ก็เปรียบกับการรวมกำลังของซามูไรที่ดึงเพื่อนๆ มาร่วมศึกด้วย
# ดึงการเปลี่ยนแปลงล่าสุดจาก remote ก่อนทำงานต่อ
git pull origin main
# หรือแบบละเอียดขึ้น
git fetch origin
git merge origin/main
Git Push ผลักอกผลักใจ 💗💗
ในขณะที่เราต้องการแชร์การเปลี่ยนแปลงของโครงการให้กับเพื่อนร่วมทีมรับรู้ เราก็จะต้อง push การเปลี่ยนแปลงดังกล่าว ซึ่งก็เหมือนการผลักดันอารมณ์และพละกำลังสู่การต่อสู้นั่นแหละ
# ผลักดันการเปลี่ยนแปลงที่ commit แล้วขึ้น remote repo
git push origin feature-branch
# ถ้าต้องการผลักดันการเปลี่ยนแปลงไปยัง remote repo ใหม่
git remote add new-origin https://git.new-server.com/repo.git
git push -u new-origin main
“คำสั่งเหล่านี้ถือเป็นยุทธวิธีขั้นสูงในการเคลื่อนย้ายการรบของซามูไร ไม่ว่าจะเป็นการเคลื่อนพลจาก Clone, การดึงพลังเสริมจาก Pull หรือการผลักดันกำลังรบด้วย Push การใช้งานอย่างถูกต้องและเหมาะสมจะทำให้ปฏิบัติการพัฒนาโค้ดของคุณราบรื่นและได้รับชัยชนะอย่างสง่างาม โดยมี Git คอยเป็นผู้สั่งการกองทัพโค้ดของคุณอยู่เบื้องหลัง หวังว่าเหล่าพ่อมดตัวน้อยที่อ่านบทความนี้จะได้ความรู้เเละความสนุกไม่มากก็น้อย ขอบคุณที่อ่านกันจนจบน๊าา”