10 คำสั่ง Git ที่นักพัฒนาซอฟแวร์ต้องรู้จัก
Git เป็นซอฟต์แวร์โอเพ่นซอร์สและช่วยให้นักพัฒนาจัดการซอร์สโค้ดเวอร์ชันต่างๆ ได้อย่างง่ายดาย ซึ่งมันทำให้เรารู้ได้ว่าใครทำอะไร เมื่อไหร่ และทำไม
ปัจจุบัน Git กลายเป็นเครื่องมือที่นักพัฒนาทุกคนต้องมี และการรู้คำสั่ง Git ถือเป็นสิ่งสำคัญ ถึงแม้จะมีพวก GUI มาให้ใช้แล้วก็ตาม
สำหรับนักพัฒนาในการใช้ Git ให้เต็มศักยภาพ มีคำสั่ง Git หลายร้อยคำสั่ง แต่มีคำสั่งที่สำคัญเพียงไม่กี่คำสั่งเท่านั้นที่ใช้เป็นประจำ
1. git init
คำสั่ง git init ช่วยให้เราสร้างที่เก็บ Git ใหม่ นี่เป็นคำสั่งแรกในการเริ่มโปรเจ็กต์ใหม่ในพื้นที่เก็บข้อมูล GitHub ไปที่ไดเร็กทอรีที่มีไฟล์โปรเจ็กต์ของคุณ และรันคำสั่ง git init ไดเรกทอรีย่อย .git ที่ซ่อนอยู่จะถูกเพิ่มเข้าไป
วิธีใช้
$ git init
และยังสามารถกำหนดโปรเจคไปได้เลย
$ git init <your repository name>
2. git clone
git clone จะทำการดาวน์โหลดซอร์สโค้ดจาก Git Server เช่น Gitlab หรือ Github ลงมาในเครื่องของเราโดยอัตโนมัติ
วิธีใช้
$ git clone <git-repo-url>
3. git branch
git branch ช่วยให้เราสามารถเพิ่ม branch ใหม่และ ดู branch ที่มีอยู่ทั้งหมด และลบ branch ออกไปได้
วิธีใช้
สร้างใหม่
$ git branch <branch-name>
ดู branch ในเครื่องเราและบน Git server
$ git branch -a
ดู branch เฉพาะในเครื่องเรา
$ git branch
# หรือ
$ git branch --list
ลบ branch
$ git branch -d <branch-name>
เปลี่ยนชื่อ branch
$ git branch -m <branch-name> <new-branch-name>
4. git checkout
คำสั่ง git checkout ช่วยให้เราสามารถสลับไปยัง branch ที่มีอยู่หรือสร้างและสลับไปยัง branch ใหม่ได้
วิธีใช้
สลับ branch
$ git checkout <branch-name>
สร้าง และสลับไป branch นั้นเลย
$ git checkout -b <branch-name>
5. git add
คำสั่ง git adds จะเพิ่มการเปลี่ยนแปลงของเราในไฟล์ไปยัง staging ซึ่งเราสามารถเปรียบเทียบเวอร์ชั่นในเครื่องและเวอร์ชันบน Git server ได้
ก่อนที่เราจะ Commit ไฟล์ใหม่หรือไฟล์ที่ถูกแก้ไข ควรเพิ่มไฟล์นั้นลง staging โดยใช้คำสั่ง git add
วิธีใช้
เพิ่มไฟล์ใหม่ที่กำหนด
$ git add <file-name-1> <file-name-2>
เพิ่มไฟล์ใหม่ทั้งหมด และลบไฟล์
$ git add -A
เพิ่มไฟล์ที่ถูกแก้ไข และลบไฟล์
$ git add -U
6. git commit
git commit จะบันทึกการเปลี่ยนแปลงในพื้นที่เก็บข้อมูลในเครื่องของเรา ทุกครั้งที่เรายืนยันการเปลี่ยนแปลงโค้ด เราจะต้องใส่คำอธิบายสั้นๆ (Commit message) เกี่ยวกับการเปลี่ยนแปลงที่เกิดขึ้น ข้อความยืนยันนี้ช่วยให้ผู้อื่นเข้าใจการเปลี่ยนแปลงที่เกิดขึ้น
วิธีใช้
commit ไฟล์ทุกไฟล์ที่เราทำการ git add
ไปแล้ว
$ git commit -a
commit ไฟล์พร้อมคำอธิบาย
$ git commit -m "<commit-message>"
เราสามารถแทนที่สองคำสั่งก่อนหน้าด้วยคำสั่งเดียว
$ git commit -am "<commit-message>"
แก้ไข Commit ครั้งล่าสุดด้วยการเปลี่ยนแปลงล่าสุดเป็น Commit ใหม่
$ git commit --amend -m “<commit-message>"
7. git push
คำสั่ง git push จะอัพโหลดการเปลี่ยนแปลงไฟล์ที่ Commit จากพื้นที่เก็บข้อมูลในเครื่องไปยัง Git server เพื่อให้ผู้อื่นสามารถใช้งานได้ นอกจากนี้ยังจะสร้าง branch ใน Git server ให้ด้วยถ้าบนนั้นไม่มีอยู่
วิธีใช้
$ git push
# หรือ
$ git push <remote> <branch-name>
หาก branch ของเราเป็นสาขาที่สร้างขึ้นใหม่ เราจะต้องอัพโหลด branch โดยใช้คำสั่ง
$ git push --set-upstream <remote> <branch-name>
# หรือ
$ git push -u origin <branch-name>
8. git pull
git pull ดึงการเปลี่ยนแปลงที่อัปโหลดล่าสุดจาก Git server ไปยังที่เก็บข้อมูลในเครื่องเรา เพื่อให้เราสามารถรับการอัปเดตล่าสุดจากเพื่อนร่วมทีมของเราได้
วิธีใช้
$ git pull
# หรือ
$ git pull <remote>
# หรือ
$ git pull <remote> <branch-name>
9. git merge
คำสั่ง git merge จะเป็นการรวม branch 2 branch เข้าด้วยกัน โดยทั่วๆ ไปจะเป็นการรวมจาก feature (branch) ไปยัง main (branch) ทั้งนี้ขึ้นอยู่กับ Git workflow ของเรา
มันจะสร้างการ Commit ใหม่โดยอัตโนมัติหากไม่มีข้อขัดแย้งของโค็ด ก่อนที่จะรันคำสั่ง git merge เราควรอยู่ใน branch เฉพาะที่คุณต้องการรวมกับ branch หลักของเรา
วิธีใช้
เปลี่ยนไปยัง branch ที่เราต้องการรวม
$ git checkout <branch>
คำสั่งดึงข้อมูลล่าสุด
$ git pull or git fetch
หากไม่มีข้อขัดแย้งของโค็ด ในขณะที่ดึงการอัปเดต เราสามารถรวม branch ของเราเข้ากับ branch หลักได้
$ git merge <branch-name>
10. git status
แสดงภาพรวมของสถานะปัจจุบันของพื้นที่เก็บข้อมูลของเรา
วิธีใช้
$ git status
มันจะแสดงข้อมูลเกี่ยวกับ branch ของเราดังนี้
- ชื่อ branch ปัจจุบันของเรา ไม่ว่า branch ปัจจุบันของเราจะอัปเดตหรือไม่ก็ตาม
- จำนวนการ commit ที่ branch ของเราอยู่หลัง branch ของ Git server
- การเปลี่ยนแปลงที่ staged และที่ commit แล้ว
- การเปลี่ยนแปลงที่ไม่ได้อยู่ใน staged
- Un-tracked ไฟล์
บทสรุป
ถึงแม้ว่าจะมี Git client ต่างๆ ให้เราเลือกใช้งานโดยไม่จำเป็นต้องรู้คำสั่งพวกนี้เลย แต่พอได้ทำงานไประดับที่ยากขึ้น พวกเราจะมีโอกาสได้ใช้งานคำสั่ง Git เองแน่นอน ฉะนั้นเรียนรู้ และฝึกใช้งานรอได้เลย
Happy coding 😄