วิธีเรียน Git: แผนการเรียน แบบฝึก เอกสาร และการลงมือทำ
การเรียน Git ควรแบ่งเป็นสี่ขั้น ได้แก่ วงจรพื้นฐาน (init, add, commit, log) บรานช์และการ merge การทำงานกับรีโมตและทีม และการแก้ไขข้อผิดพลาดกับเครื่องมือขั้นสูง การจะทำงานได้อย่างมั่นใจมักใช้เวลาสองถึงสี่สัปดาห์ของการฝึกสม่ำเสมอในรีโพของตัวเอง
Git เรียนรู้ได้ด้วยการลงมือทำ ไม่ใช่การอ่านอย่างเดียว หากต้องการทำงานในทีมได้อย่างมั่นใจ คุณเพียงต้องเชี่ยวชาญคำสั่งราวยี่สิบคำสั่ง และเข้าใจสามแนวคิด คือ คอมมิตคือสแนปชอตของโปรเจกต์ บรานช์คือตัวชี้ไปยังคอมมิต และรีโมตคือสำเนาประวัติอีกชุดหนึ่ง ด้านล่างนี้คือแผนการเรียน Git เป็นขั้นตอน พร้อมแบบฝึกหัด ทรัพยากรฟรี และเกณฑ์ที่บอกได้ว่าผ่านขั้นนั้นแล้ว
แผนนี้ออกแบบสำหรับมือใหม่ที่ใช้เทอร์มินัลได้อยู่บ้างแล้วในระดับ cd และ ls หากยังไม่คุ้นเลย ให้ใช้เวลาหนึ่งค่ำคืนกับพื้นฐานของบรรทัดคำสั่งก่อน เพราะการเรียน Git โดยไม่รู้จักมันจะยากขึ้นมาก
ทำไมควรเรียน Git อย่างเป็นระบบ
หลายคนใช้ Git มาหลายปีโดยจำคำสั่งห้าคำสั่งที่คัดลอกมาจากคำแนะนำของคนอื่น และตกใจทุกครั้งที่เจอ conflict หรือ "detached HEAD" สาเหตุเกือบทุกครั้งคือขาดแบบจำลองในหัว คือไม่เข้าใจว่าคำสั่งแต่ละคำสั่งเปลี่ยนอะไรในประวัติและในไฟล์
การเรียนอย่างเป็นระบบคุ้มค่ามาก คุณจะไม่กลัวการทดลองอีกต่อไป เพราะรู้วิธีย้อนกลับ แก้ conflict ได้อย่างใจเย็น และดูแลประวัติให้สะอาดซึ่งผู้รีวิวและนายจ้างจะเห็น Git เป็นหัวข้อที่ถูกถามในการสัมภาษณ์งานเกือบทุกสายอาชีพด้าน IT ตั้งแต่ฟรอนต์เอนด์ไปจนถึง DevOps และการวิเคราะห์ข้อมูล
ขั้นที่ 1 พื้นฐาน: รีโพซิทอรี อินเด็กซ์ คอมมิต
เป้าหมายของขั้นแรกคือเข้าใจวงจรพื้นฐานและพื้นที่ทั้งสามของ Git ได้แก่ โฟลเดอร์งาน อินเด็กซ์ และรีโพซิทอรี ใช้เวลาประมาณสองถึงสี่วัน วันละหนึ่งชั่วโมง
- ติดตั้งและตั้งค่าเบื้องต้น:
git config --global user.name,user.emailและบรานช์เริ่มต้นmain - สร้างรีโพซิทอรี:
git init - วงจร
git status→git add→git commitและการเลือกเพิ่มบางส่วนด้วยgit add -p - ดูประวัติ:
git log --oneline,git diff,git diff --staged,git show - ไฟล์
.gitignore: อะไรไม่ควรเข้าไปอยู่ในรีโพซิทอรี
แบบฝึกหัด สร้างรีโพซิทอรีสำหรับบันทึกหรือสคริปต์เล็ก ๆ ของคุณเอง ทำ 15–20 คอมมิต โดยแต่ละคอมมิตคือหนึ่งการเปลี่ยนแปลงเชิงตรรกะพร้อมข้อความที่เข้าใจได้ หลังทุกคำสั่งให้รัน git status และอธิบายกับตัวเองว่าอะไรเปลี่ยนไป
ผ่านขั้นนี้เมื่อ คุณตอบได้โดยไม่ต้องดูคำใบ้ว่า ผลของ git diff ต่างจาก git diff --staged อย่างไร และสามารถคอมมิตเฉพาะบางไฟล์ที่แก้ไขได้
ขั้นที่ 2 บรานช์และการ merge
บรานช์คือหัวใจของ Git และเป็นแหล่งความกลัวหลักของมือใหม่ จุดสำคัญคือไม่ต้องท่องจำคำสั่ง แต่ต้องฝึกนึกภาพกราฟของคอมมิต ใช้เวลาประมาณหนึ่งสัปดาห์
- การสร้างและสลับบรานช์:
git branch,git switch,git switch -c - HEAD คืออะไร และสถานะ detached HEAD
- การ merge:
git merge, fast-forward และ merge commit รวมถึงแฟล็ก--no-ff - Conflict: เครื่องหมาย
<<<<<<<และ>>>>>>>และgit merge --abort - การมองเห็นกราฟ:
git log --oneline --graph --all
แบบฝึกหัด สร้างสองบรานช์จาก main แล้วแก้บรรทัดเดียวกันของไฟล์เดียวในแต่ละบรานช์ merge ทีละบรานช์ให้เกิด conflict แล้วแก้ไข ทำซ้ำจนรู้สึกว่าน่าเบื่อ
ในขั้นนี้เครื่องมือที่ช่วยได้มากที่สุดคือเกมฝึก Git แบบโต้ตอบ ซึ่งเราจะพูดถึงด้านล่าง เกมแสดงกราฟหลังทุกคำสั่งและช่วยสร้างสัญชาตญาณได้เร็ว
ขั้นที่ 3 รีโมตและการทำงานเป็นทีม
เป้าหมายคือการทำงานกับเซิร์ฟเวอร์ในแบบที่ทีมทั่วไปทำกัน คุณต้องมีบัญชีบน GitHub, GitLab หรือโฮสติ้ง Git อื่น ใช้เวลาประมาณหนึ่งสัปดาห์
- การเชื่อมต่อและโคลน:
git remote add,git clone, การเข้าสู่ระบบด้วยคีย์ SSH - การซิงก์:
git push,git push -u,git fetch,git pullและความต่างระหว่างกัน - บรานช์แบบ remote-tracking เช่น
origin/main - fork, บรานช์ฟีเจอร์ และ pull request พร้อมการรีวิวโค้ด
- กระบวนการของทีม: GitHub Flow, Git Flow, trunk-based development
แบบฝึกหัด ทำงานกับรีโพซิทอรีเดียวจากสอง "เครื่อง" โดยโคลนลงสองโฟลเดอร์ต่างกัน คอมมิตในโฟลเดอร์หนึ่ง push แล้วดึงไปยังอีกโฟลเดอร์ สร้างสถานการณ์ที่ push ถูกปฏิเสธเพราะเซิร์ฟเวอร์ไปข้างหน้าแล้ว และหาสาเหตุให้ได้
git clone git@github.com:you/sandbox.git copy-a
git clone git@github.com:you/sandbox.git copy-b
cd copy-a && echo "จาก A" >> notes.txt && git commit -am "แก้จาก A" && git push
cd ../copy-b && echo "จาก B" >> notes.txt && git commit -am "แก้จาก B"
git push # rejected: เซิร์ฟเวอร์ไปข้างหน้าแล้ว
git pull # ได้การแก้ไขจาก A แก้ conflict ใน notes.txt
git push
ตัวอย่างสั้น ๆ นี้จำลองสถานการณ์ที่พบบ่อยที่สุดในทีม ให้อ่านผลลัพธ์ของแต่ละคำสั่ง ว่าทำไม push ถูกปฏิเสธ อะไรปรากฏใน origin/main หลัง fetch และ merge commit มาจากไหน จากนั้นทำซ้ำด้วย git pull --rebase แล้วเปรียบเทียบกราฟด้วย git log --oneline --graph --all
ดียิ่งขึ้นอีกคือหาเพื่อนร่วมฝึกและทำโปรเจกต์เล็ก ๆ ด้วยกันผ่าน pull request วิธีนี้จะให้ความรู้สึกจริงของการรีวิว conflict และข้อตกลงเรื่องบรานช์
ขั้นที่ 4 การแก้ไขข้อผิดพลาด
ขั้นนี้เปลี่ยน Git จากแหล่งความวิตกให้กลายเป็นตาข่ายนิรภัย ใช้เวลา 3–5 วัน
git restoreและgit restore --stagedย้อนการเปลี่ยนแปลงในไฟล์และอินเด็กซ์git commit --amendแก้คอมมิตล่าสุดgit resetในโหมด--soft,--mixed,--hardgit revertย้อนคอมมิตที่เผยแพร่แล้วอย่างปลอดภัยgit reflogกู้คืนคอมมิตที่ "หายไป"
แบบฝึกหัด ทำหลายคอมมิต รัน git reset --hard HEAD~3 แล้วกู้คืนด้วย reflog ย้อนคอมมิตในบรานช์ "ร่วม" ด้วย revert และดูว่าปรากฏในประวัติอย่างไร
ขั้นที่ 5 เครื่องมือขั้นสูง
เครื่องมือเหล่านี้เรียนเมื่อจำเป็น แต่ควรรู้ว่ามีอยู่ตั้งแต่ต้น
| เครื่องมือ | เมื่อไรควรใช้ |
|---|---|
git rebase และ git rebase -i | ต้องการประวัติเป็นเส้นตรง หรือจัดระเบียบคอมมิตก่อนเปิด pull request |
git stash | ต้องสลับงานด่วนโดยยังไม่คอมมิตงานที่ทำค้างไว้ |
git cherry-pick | ย้ายคอมมิตเดียว เช่น hotfix |
git tag | ทำเครื่องหมายเวอร์ชันของรีลีส |
git bisect | หาคอมมิตที่ทำให้โค้ดพัง |
git worktree, git submodule | หลายโฟลเดอร์งาน และรีโพซิทอรีที่ซ้อนกัน |
เกมฝึกและสนามทดลองของ Git
เครื่องมือฝึกดีตรงที่ให้พื้นที่ทดลองที่ปลอดภัยและแสดงผลทันที มีตัวเลือกฟรีหลายแบบ
- Learn Git Branching (learngitbranching.js.org) เป็นเกมฝึกเรื่องบรานช์ที่ดีที่สุด มีด่านที่มีโจทย์ กราฟคอมมิตแบบเคลื่อนไหว และมีอินเทอร์เฟซภาษารัสเซีย ครอบคลุม commit, branch, merge, rebase, cherry-pick, interactive rebase และการทำงานกับ remote
- Oh My Git! เป็นเกมฟรีโอเพนซอร์สที่แสดงคำสั่ง Git เป็นการ์ด โดยเบื้องหลังใช้ Git จริง
- รีโพซิทอรีสำหรับทดลองของคุณเอง เป็นเครื่องมือฝึกที่ถูกมองข้ามมากที่สุด สร้างโฟลเดอร์
git-sandboxแล้วลองทำลายทุกอย่างในนั้น ไม่มีอะไรต้องเสียที่นี่
เกมฝึกช่วยพัฒนาความเข้าใจเรื่องกราฟได้ดีมาก แต่ไม่สามารถแทนโปรเจกต์จริงได้ เพราะไม่มีไฟล์จริง ตัวแก้ไข IDE และ conflict ในโค้ดจริง ให้ใช้เป็นส่วนเสริม
เอกสารและหนังสือของ Git
เอกสารทางการของ Git อยู่ที่ git-scm.com และที่นั่นมีหนังสือ Pro Git ของ Scott Chacon และ Ben Straub ให้อ่านฟรี รวมถึงฉบับแปลภาษารัสเซีย นี่คือหนังสือเรียน Git ที่ดีที่สุด บทแรกสามบท (พื้นฐานและการแยกสาขา) จำเป็นต้องอ่าน และบท "Git Internals" สำหรับผู้ที่ต้องการเข้าใจโมเดลข้อมูลอย่างถ่องแท้
ความช่วยเหลือในตัวพร้อมใช้เสมอ git help <คำสั่ง> เปิดคู่มือฉบับเต็ม และ git <คำสั่ง> -h แสดงรายการแฟล็กแบบย่อ เอกสารของ Git เขียนอย่างแห้งแต่แม่นยำ ควรเปิดตรวจกับมันก่อนคำตอบแรกจากการค้นหา
git help rebase # คู่มือฉบับเต็ม
git switch -h # สรุปแฟล็กแบบย่อ
git help -g # รายการคู่มือแนวคิด (gitworkflows, gittutorial…)
คู่มือ gittutorial และ giteveryday ก็มีประโยชน์ ทั้งสองมาพร้อม Git และเปิดได้ด้วย git help
เรียนด้วยตัวเองหรือเรียนในคอร์ส
การเรียน Git ด้วยตัวเองทำได้จริง หนังสือ เกมฝึก และสนามทดลองให้ทุกอย่างที่จำเป็น ความยากอยู่ที่อื่น หากไม่มีโครงสร้าง คุณอาจติดอยู่กับทฤษฎี หรือจำคำสั่งมากมายโดยไม่เข้าใจ และไม่มีใครบอกว่าประวัติที่คุณทำไว้ยุ่งเหยิงแค่ไหน หากไม่มีผลป้อนกลับ
คอร์สเรื่อง Git มีประโยชน์เมื่อคุณต้องการเดินทางให้เร็วและเป็นลำดับ ตั้งแต่คอมมิตแรกไปจนถึง pull request ในรีโพจริง พร้อมโจทย์ในทุกขั้น เมื่อเลือกคอร์ส อย่ามองแค่ความยาว แต่ดูสัดส่วนของการลงมือทำ ว่ามีโจทย์เรื่อง conflict การย้อนข้อผิดพลาด การทำงานเป็นทีม และโปรเจกต์ปิดท้ายหรือไม่
ต้องใช้เวลาเท่าไรในการเรียน Git
| ระดับ | สิ่งที่ทำได้ | ระยะเวลาที่วันละ 1 ชั่วโมง |
|---|---|---|
| พื้นฐาน | คอมมิต ประวัติ .gitignore | 3–5 วัน |
| ใช้งานได้จริง | บรานช์ conflict push/pull pull request | 2–3 สัปดาห์ |
| มั่นใจ | แก้ข้อผิดพลาด rebase reflog เวิร์กโฟลว์ของทีม | 1–2 เดือนพร้อมการใช้งานจริง |
ตัวเลขเหล่านี้เป็นค่าโดยประมาณ สิ่งที่ตัดสินคือความสม่ำเสมอ การทำวันละหนึ่งชั่วโมงให้ผลมากกว่าการมาราธอนวันหยุดเดือนละครั้ง
ข้อผิดพลาดที่พบบ่อยตอนเรียน Git
- เรียนผ่าน GUI อย่างเดียว โปรแกรม GUI สะดวก แต่ซ่อนแบบจำลองไว้ ควรเข้าใจบรรทัดคำสั่งก่อน แล้วค่อยเลือกเครื่องมือที่ถนัด
- ท่องแฟล็ก สิ่งที่ควรจำคือแนวคิด แฟล็กมีอยู่ใน
-hเสมอ - กลัวการทำพัง ตราบใดที่คุณยังไม่เคยทำ
reset --hardแล้วกู้คืนได้ คุณก็ยังไม่รู้ว่า Git คอยป้องกันคุณอยู่ - ข้ามรีโมตไป Git ในเครื่องโดยไม่มี push, pull และ pull request เป็นครึ่งเดียวของทักษะ
- คอมมิตชื่อ "fix" หรือ "update" การเขียนข้อความที่มีความหมายควรฝึกตั้งแต่แรก
โปรเจกต์ปิดท้ายเพื่อทบทวน
การทดสอบที่ดีที่สุดคือจำลองการพัฒนาเป็นทีม สร้างรีโพซิทอรี ป้องกันบรานช์ main ไม่ให้ push ตรง เชิญเพื่อนร่วมงานหรือทำงานจากสองบัญชี งานแต่ละชิ้นคือบรานช์ฟีเจอร์แยกและ pull request พร้อมการรีวิว อย่างน้อยหนึ่งครั้งให้สร้าง conflict อย่างน้อยหนึ่งครั้งให้ย้อนคอมมิตที่พลาดด้วย revert และทำเครื่องหมายรีลีสด้วยแท็ก
หลังโปรเจกต์นี้ Git จะไม่ใช่ชุดคาถาอีกต่อไป คุณจะเห็นกราฟ เข้าใจผลของคำสั่ง และพร้อมตอบคำถามในการสัมภาษณ์งาน
สรุป
การเรียน Git ที่มีประสิทธิภาพเดินตามลำดับ คือ วงจรพื้นฐาน บรานช์ การทำงานกับเซิร์ฟเวอร์ การแก้ข้อผิดพลาด และเครื่องมือขั้นสูง เกมฝึกช่วยให้เห็นกราฟ หนังสือ Pro Git และเอกสารทางการให้ความลึก ส่วนสนามทดลองของตัวเองและโปรเจกต์ทีมทำให้ความรู้กลายเป็นทักษะ หลักสูตร Git ของ Skillaria ก็สร้างตามเส้นทางนี้ คือตั้งแต่ git init ไปจนถึง pull request ในโปรเจกต์ปิดท้าย
คำถามที่พบบ่อย
เรียน Git ให้จบในหนึ่งวันได้หรือไม่?
ในหนึ่งวันสามารถเรียนวงจรพื้นฐานได้ คือ init, add, commit, log และ push การทำงานกับบรานช์ conflict และการแก้ข้อผิดพลาดอย่างมั่นใจต้องฝึกหลายสัปดาห์
ต้องรู้การเขียนโปรแกรมก่อนเรียน Git หรือไม่?
ไม่จำเป็น Git ทำงานกับไฟล์ข้อความทุกชนิด จึงฝึกได้ด้วยบันทึกหรือเอกสาร ต้องการเพียงทักษะพื้นฐานของเทอร์มินัล
มีเอกสาร Git เป็นภาษาไทยหรือไม่?
เอกสารอ้างอิงคำสั่งทางการบน git-scm.com เป็นภาษาอังกฤษ แต่หนังสือ Pro Git มีฉบับแปลภาษารัสเซียบนเว็บเดียวกัน ส่วน Learn Git Branching รองรับหลายภาษา
หลัง Git ควรเรียนอะไรต่อ?
เรื่องที่เป็นขั้นถัดไปที่สมเหตุสมผลคือ CI/CD (GitHub Actions, GitLab CI) การรีวิวโค้ด และกระบวนการทำงานเป็นทีม สำหรับสาย DevOps ก็คือ Infrastructure as Code ซึ่งเก็บไว้ใน Git เช่นกัน
หัวข้อนี้สอนอย่างละเอียดพร้อมฝึกปฏิบัติในคอร์ส “Git с нуля до уверенного разработчика”
- Введение: Git с нуля до уверенного разработчика
- Финальный проект: симулируем настоящую командную разработку