Top 10 Git Commands (คำสั่ง) ที่นักเขียนโปรแกรมควรรู้

   By: DH Team

   อัปเดตล่าสุด Jan. 30, 2024

Top 10 Git Commands (คำสั่ง) ที่นักเขียนโปรแกรมควรรู้

วันนี้ผมได้ลิสต์ Top 10 คำสั่ง Git Commands ที่โปรแกรมเมอร์ นักเขียนโปรแกรมควรรู้ หรือไม่ก็เอาเป็นว่าสำหรับใครที่มาสายเขียนโค้ดก็ควรต้องรู้ไว้ครับ หรือเพื่อน ๆ ที่เข้าใจการใช้ Git แล้วแต่อยาก recap ก็จัดไป (บทความนี้ต้องมีพื้นฐาน Git มาก่อนเนอะ)

Note: สำหรับเพื่อน ๆ ที่ยังไม่มีพื้นฐานก็สามารถย้อนไปอ่านบทความนี้ก่อนครับ Git & GitHub คืออะไร ?

1. git init

git init (initialize) คือ คำสั่งสำหรับเริ่มต้นใช้งาน Git Repository ใหม่และเริ่ม track โฟลเดอร์หรือโปรเจคท์ที่เรากำลังทำงานอยู่ พร้อมกับสร้าง Local Repository ขึ้นมาในตัว

$ git init



Initialize Git

2. git clone 

git clone คือ คำสั่งสำหรับสร้างคัดลอก (copy) โค้ดของโปรเจคท์ที่อยู่บนเซิร์ฟเวอร์ (Remote Repository) ซึ่งโค้ดของโปรเจคท์นั้น ๆ อาจจะ host ไว้ใน GitHub หรือ GitLab เป็นต้น

ซึ่งเราจะใช้คำสั่งนี้เวลาที่ต้องการ clone โปรเจคท์ใน Remote Repo มาแก้ไขหรือ implement ต่อในเครื่องของเราครับ

$ git clone <URL>

ตัวอย่าง

$ git clone https://github.com/username/repository-name.git


3. git add 

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

  • ถ้ายังไม่ Add จะแสดงรายชื่อโฟลเดอร์ ไฟล์เป็นสีแดง
  • ถ้า Add แล้วจะแสดงรายชื่อโฟลเดอร์ ไฟล์เป็นเขียว


4. git commit

git commit คือ คำสั่งที่เป็นเหมือนโน๊ตบอกการเปลี่ยนแปลงที่เราได้ทำไว้กับโค้ด ให้มองว่าเป็น snapshot โดย Commit Message ควรจะเป็นคำอธิบายที่ชัดเจนว่ามีอะไรถูกเปลี่ยนแปลงไปบ้าง

โครงสร้างจะเป็นแบบนี้

$ git commit -m <commit message>

ตัวอย่าง

$ git commit -m "add hello_world.py"



โดย Best Practice ของการ commit มีดังต่อไปนี้ (บางส่วน)

  • ให้ใช้ Imperative Verb (Verb ที่ไม่เปลี่ยนรูป หรือ Present Tense นั่นเองครับ) เช่น add, fix, refactor, update, remove เป็นต้น จากตัวอย่างด้านบนคือ "add" จะไม่ใช้ "added" , "adds" หรือ "adding"
  • พยายาม commit บ่อย ๆ (จะได้ย้อนกลับไปดูสิ่งที่เราแก้ไขได้ถูกจุด)
  • Commit Message ควรกระชับ ได้ใจความ
  • ฯลฯ


5. git status

git status คือ คำสั่งที่ใช้แสดงสถานะของการเปลี่ยนแปลงเป็น untracked, modified หรือ staged บ่งบอกว่าเราได้ add, commit หรือทำอะไรไปบ้างกับโค้ดของเรา

$ git status

ซึ่งก่อนหน้านี้เราก็คุ้นเคยและใช้คำสั่งนี้ร่วมกับ git add และ commit มาแล้วเนอะ


6. git push

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 ขึ้นมาก่อนเนอะ


7. git pull 

git pull คือ คำสั่งที่ใช้อัปเดตโค้ดในเครื่องของเราให้เป็นปัจจุบันเหมือนกันกับโค้ดใน Remote Repo โดยเราสามารถใช้คำสั่งนี้เพื่อซิงค์ repository ในเครื่องของเราเข้ากับ Remote เพื่อให้โค้ดเป็นปัจจุบันนั่นเองครับ

git pull <remote> <branch>

ตัวอย่าง

สมมติ Remote Repo ของเราคือ main

$ git pull origin main


8. git branch

git branch คือ คำสั่งที่แสดงรายชื่อของ branches ทั้งหมดใน repository ปัจจุบัน ถ้าใช้ -a จะแสดง branches ทั้งหมด (ทั้งในเครื่อง Local ของเราและ Remote)

$ git branch

จะเห็นว่าตอนนี้เรามี 1 branch คือ "master"



9. git checkout

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>


การลบ Local Branch โดยใช้ -d

$ git branch -d <branch-name>

เช่นถ้าอยากลบ branch ชื่อ feature2 ก็สามารถทำได้โดย

$ git branch -d feature2


10. git merge

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 เช่น Website, Web App, Mobile App หรือสอนโค้ดดิ้ง คลาสอบรม?

เพิ่มเพื่อน LINE OA