By: DH Team
อัปเดตล่าสุด Jan. 30, 2024
วันนี้ผมได้ลิสต์ Top 10 คำสั่ง Git Commands ที่โปรแกรมเมอร์ นักเขียนโปรแกรมควรรู้ หรือไม่ก็เอาเป็นว่าสำหรับใครที่มาสายเขียนโค้ดก็ควรต้องรู้ไว้ครับ หรือเพื่อน ๆ ที่เข้าใจการใช้ Git แล้วแต่อยาก recap ก็จัดไป (บทความนี้ต้องมีพื้นฐาน Git มาก่อนเนอะ)
Note: สำหรับเพื่อน ๆ ที่ยังไม่มีพื้นฐานก็สามารถย้อนไปอ่านบทความนี้ก่อนครับ Git & GitHub คืออะไร ?
git init (initialize) คือ คำสั่งสำหรับเริ่มต้นใช้งาน Git Repository ใหม่และเริ่ม track โฟลเดอร์หรือโปรเจคท์ที่เรากำลังทำงานอยู่ พร้อมกับสร้าง Local Repository ขึ้นมาในตัว
$ git init
Initialize Git
git clone คือ คำสั่งสำหรับสร้างคัดลอก (copy) โค้ดของโปรเจคท์ที่อยู่บนเซิร์ฟเวอร์ (Remote Repository) ซึ่งโค้ดของโปรเจคท์นั้น ๆ อาจจะ host ไว้ใน GitHub หรือ GitLab เป็นต้น
ซึ่งเราจะใช้คำสั่งนี้เวลาที่ต้องการ clone โปรเจคท์ใน Remote Repo มาแก้ไขหรือ implement ต่อในเครื่องของเราครับ
$ git clone <URL>
ตัวอย่าง
$ git clone https://github.com/username/repository-name.git
git add คือ คำสั่งสำหรับเพิ่มไฟล์หรือโฟลเดอร์โปรเจคท์เราลงไปในส่วนที่เตรียมไว้สำหรับการ commit (Staging Area) เพื่อบอก Git ว่าเราต้องการรวบรวมการเปลี่ยนแปลงของไฟล์นี้ในการ commit ครั้งถัดไป ส่วน git add . จะเพิ่มไฟล์ใหม่และไฟล์ที่มีการเปลี่ยนแปลงทั้งหมดลงใน Staging Area
$ git add <file>
ตัวอย่าง
$ git add hello_world.py
คำสั่ง git add
หรือจะแอดไฟล์หรือโฟลเดอร์หรือทั้งหมดทั้งมวลของโค้ดเราในทีเดียว ด้วยคำสั่ง git add .
$ git add .
Note: ไม่แนะนำเมื่อมีการเปลี่ยนแปลงหรืออัปเดตหลาย ๆ ไฟล์แล้วทำการแอดในครั้งเดียว เพราะเวลาย้อนกลับมาดู มันจะดูยากครับว่าเราแก้หรือ commit อะไรไปบ้าง
โดยมีข้อสังเกตไฟล์ต่าง ๆ ที่มีการเปลี่ยนแปลง ใช้คำสั่ง
$ git status
git commit คือ คำสั่งที่เป็นเหมือนโน๊ตบอกการเปลี่ยนแปลงที่เราได้ทำไว้กับโค้ด ให้มองว่าเป็น snapshot โดย Commit Message ควรจะเป็นคำอธิบายที่ชัดเจนว่ามีอะไรถูกเปลี่ยนแปลงไปบ้าง
โครงสร้างจะเป็นแบบนี้
$ git commit -m <commit message>
ตัวอย่าง
$ git commit -m "add hello_world.py"
โดย Best Practice ของการ commit มีดังต่อไปนี้ (บางส่วน)
git status คือ คำสั่งที่ใช้แสดงสถานะของการเปลี่ยนแปลงเป็น untracked, modified หรือ staged บ่งบอกว่าเราได้ add, commit หรือทำอะไรไปบ้างกับโค้ดของเรา
$ git status
ซึ่งก่อนหน้านี้เราก็คุ้นเคยและใช้คำสั่งนี้ร่วมกับ git add และ commit มาแล้วเนอะ
git push คือ คำสั่งที่ใช้สำหรับอัปโหลดโค้ดทั้งหมดของ branch ในเครื่องของเราที่ได้ commit และ add เรียบร้อยแล้วไปยัง Remote Repo (ก็คือ repo ที่อยู่ออนไลน์นั่นแหละครับ เช่น อยู่บน GitHub) โดย <remote> คือ origin และ branch คือชื่อของ branch ใน remote (ปกติมักจะใช้ "main" หรือ "master")
$ git push <remote> <branch>
ตัวอย่าง
$ git push origin main
Note: อันนี้ต้องสร้าง Remote Repo ใน GitHub ขึ้นมาก่อนเนอะ
git pull คือ คำสั่งที่ใช้อัปเดตโค้ดในเครื่องของเราให้เป็นปัจจุบันเหมือนกันกับโค้ดใน Remote Repo โดยเราสามารถใช้คำสั่งนี้เพื่อซิงค์ repository ในเครื่องของเราเข้ากับ Remote เพื่อให้โค้ดเป็นปัจจุบันนั่นเองครับ
git pull <remote> <branch>
ตัวอย่าง
สมมติ Remote Repo ของเราคือ main
$ git pull origin main
git branch คือ คำสั่งที่แสดงรายชื่อของ branches ทั้งหมดใน repository ปัจจุบัน ถ้าใช้ -a จะแสดง branches ทั้งหมด (ทั้งในเครื่อง Local ของเราและ Remote)
$ git branch
จะเห็นว่าตอนนี้เรามี 1 branch คือ "master"
git checkout คือ คำสั่งที่ใช้สลับไปใช้ branch อื่นใน Working Directory
สำหรับสลับ branch
$ git checkout <branch-name>
แต่ถ้าใช้คำสั่งเพิ่มเติมคือ '-b' จะเป็นการสร้าง branch ใหม่ได้ในเวลาเดียวกัน
สำหรับสร้าง branch ใหม่
$ git checkout -b <branch-name>
ตัวอย่าง เช่น หากตอนนี้เราอยู่ใน master branch ต้องการสลับไปที่ feature-branch สมมติว่าชื่อว่า feature-a ก็สามารถทำได้โดย
$ git checkout feature-a
ปล. ตอนนี้เรายังไม่ได้สร้าง feature-a ลองสร้างขึ้นมาได้ครับ
หรือจะสร้าง branch ใหม่ชื่อ feature-x ทำได้โดย
$ git checkout -b feature-x
ตอนนี้ branch ที่เราสร้างขึ้นมาเป็น Local Branch คืออยู่ในเครื่องของเราเท่านั้น ถ้าเราต้องการให้ branch นี้ที่เพิ่งสร้างถูกอัปโหลดไปที่ Remote ก็ทำได้ด้วยคำสั่ง
อัปโหลด Local Branch ไปไว้ที่ Remote Branch
$ git push -u origin <branch-name>
หรือ
$ git push --set-upstream origin <branch-name>
$ git branch -d <branch-name>
เช่นถ้าอยากลบ branch ชื่อ feature2 ก็สามารถทำได้โดย
$ git branch -d feature2
git merge คือ คำสั่งเมื่อโค้ดของเราใน dev branch นั้นทำงานได้ดีไม่มีปัญหา จากนั้นเราจะทำการ Merge โค้ดของ dev branch เข้าไปที่ main branch ใน Remote Repo
$ git merge <branch>
โดยสมมติผมได้สร้าง branch dev ขึ้นมาใหม่ และได้ merge โค้ดของ feature-x ที่ได้อัปเดตก่อนหน้าเข้าไปที่ dev เรียบร้อย
ทีนี้เมื่อเราเทสและ make sure แล้วว่าโค้ดใน dev ของเราทำงานได้ดีไม่มีปัญหา ก็จะทำการ merge dev เข้าไปที่ remote branch นั่นก็คือ "main"
Note: ต้องทำการสลับไปใน main branch ก่อนนะครับ ด้วยคำสั่ง git checkout main จากนั้นเมื่ออยู่ใน main ก็สามารถ merge ได้เลย ด้วยคำสั่ง
$ git merge dev
ซึ่ง dev ก็จะถูก merge เข้ากันกับ main เรียบร้อยครับ
วันนี้เราก็ได้เรียนรู้การใช้งาน Git Commands ที่จำเป็นกันเรียบร้อยแล้วครับ ซึ่งยังมีอีกหลายคำสั่งที่ไม่ได้ถูกพูดถึง แต่เอาเป็นว่าถ้าเข้าใจคำสั่งเหล่านี้ ก็ถือว่าเราน่าจะเข้าใจการใช้งาน Git แล้วในระดับหนึ่งเลยครับ จากนั้นจะต่อยอดไปใช้งานคำสั่งอื่น ๆ ที่ซับซ้อนหรือนอกเหนือจากนี้ก็ทำได้ไม่ยาก ซึ่งการใช้งานก็เลือกให้เหมาะสมตามบริบทนะครับ
เพราะ Git ถือเป็นอีกหนึ่งสกิลที่โปรแกรมเมอร์มือทุกคนควรต้องมีไว้ติดตัว ถือเป็นสกิลที่ required เลยก็ว่าได้ครับ โดยเฉพาะถ้าเพื่อน ๆ ต้องไปสมัครงาน สกิลอันนี้มีมใน Job Description ยืนพื้นอยู่แล้ว เพราะมันคือสกิลพื้นฐานที่จะทำให้เราทำงานร่วมกับนักพัฒนาหรือโปรแกรมเมอร์ภายในทีมได้สะดวกมากยิ่งขึ้นนั่นเอง
เปิดโลกการเขียนโปรแกรมและ Software Development ด้วย online courses ที่จะพาคุณอัพสกิลและพัฒนาสู่การเป็นมืออาชีพ เรียนออนไลน์ เรียนจากที่ไหนก็ได้ พร้อมซัพพอร์ตหลังเรียน
คอร์สเรียนเขียนโปรแกรม