Skip to content

คำสั่ง Git ฉบับสรุป

คำสั่ง Git ที่คุณใช้จริง จัดกลุ่มตามงาน: ตั้ง repo, บันทึกงาน, แตกกิ่งและ merge, อ่านประวัติ, แชร์กับ remote, ย้อนข้อผิดพลาด, พักงานไว้ และจัดการไฟล์กับ submodule แต่ละแถวจับคู่คำสั่งกับการเรียกใช้ที่สมจริง

Git มีคำสั่งหลายร้อยคำสั่ง แต่งานประจำวันต้องใช้เพียงไม่กี่คำสั่ง โมเดลในหัวคือ: working tree คือไฟล์ของคุณ, index (staging area) คือ commit ถัดไป และ HEAD คือ commit ปัจจุบัน คุณ stage, คุณ commit, คุณแชร์ อ่าน status บ่อย ๆ ทุกอย่างด้านล่างถือว่าคำสั่งที่ระบุไว้มีอยู่แล้ว

ตารางอ้างอิง · 55 รายการ
55 of 55 rows
การตั้งค่าและกำหนดค่า
ตั้งชื่อ อีเมล หรือ editor ของคุณครั้งเดียวใช้ได้กับทุก repogit config --global user.name "Ada"
กำหนดชื่อลัดให้คำสั่งที่คุณพิมพ์บ่อยgit config --global alias.co checkout
สร้าง repository ใหม่ในโฟลเดอร์ปัจจุบันgit init
คัดลอก remote repository มาไว้บนเครื่องของคุณgit clone git@github.com:org/repo.git
คัดลอกเฉพาะ commit ล่าสุดของ branch เดียวgit clone --depth 1 --single-branch git@github.com:org/repo.git
พื้นฐาน snapshot
แสดงสิ่งที่ถูก stage, แก้ไขแล้ว และยังไม่ถูกติดตามgit status -sb
stage การเปลี่ยนแปลงเพื่อให้เข้าสู่ commit ถัดไปgit add src/app.ts
ทบทวนการเปลี่ยนแปลงทีละส่วน และ stage เฉพาะส่วนที่คุณยอมรับgit add -p src/app.ts
stage การเปลี่ยนแปลงของทุกไฟล์ที่ติดตามอยู่ โดยไม่เพิ่มไฟล์ใหม่git add -u
บันทึกการเปลี่ยนแปลงที่ stage แล้วเป็น commit ใหม่git commit -m "fix: null check"
แทนที่ commit ล่าสุดด้วยอันที่แก้ไขแล้วgit commit --amend -m "fix: handle empty input"
แสดงการเปลี่ยนแปลงที่ยังไม่ stage หรือที่ stage แล้วด้วย --stagedgit diff --staged
แสดงทุกการเปลี่ยนแปลงตั้งแต่ commit ล่าสุด ไม่ว่าจะ stage หรือไม่git diff HEAD
การแตก branch และ merge
แสดงรายการ, สร้าง หรือลบ branchgit branch feature-x
ลบ branch ที่ merge แล้ว (-D บังคับลบ, -a แสดงทุก branch)git branch -d feature-x
สลับ branch (คำสั่งสมัยใหม่ที่แทน checkout)git switch feature-x
สร้าง branch ใหม่และสลับไปในคำสั่งเดียวgit switch -c feature-x
สลับ branch หรือกู้คืนไฟล์ (คำสั่งเก่าที่ครอบคลุมกว่า)git checkout feature-x
นำการเปลี่ยนแปลงจาก branch อื่นเข้ามาใน branch ปัจจุบันgit merge feature-x
ยกเลิก merge ที่เกิด conflict และคืน branch กลับสู่สถานะเดิมgit merge --abort
เล่น commit ของ branch ปัจจุบันซ้ำบน branch อื่นgit rebase main
รวม, จัดลำดับ หรือแก้ไข commit ขณะเล่นซ้ำgit rebase -i main
คัดลอก commit เดี่ยวจาก branch อื่นมาไว้บน branch นี้git cherry-pick a1b2c3d
ติดป้ายชื่อที่อ่านง่าย เช่น เวอร์ชัน ให้กับ commitgit tag -a v1.2.0
เช็คเอาต์ branch อื่นในโฟลเดอร์แยกไปพร้อมกันgit worktree add ../repo-feature feature-x
การตรวจดูประวัติ
เดินดูประวัติ commitgit log --oneline --graph --decorate
เดินดูประวัติจากทุก branch ไม่ใช่แค่ branch ปัจจุบันgit log --oneline --graph --all
แสดง diff และข้อความเต็มของ commit เดียวgit show HEAD
แสดงว่าใครแก้แต่ละบรรทัดของไฟล์ล่าสุดgit blame src/app.ts
แสดงทุก commit ที่ HEAD เคยชี้ รวมถึงที่ถูกทิ้งไปgit reflog
ค้นหาในประวัติแบบครึ่ง ๆ เพื่อหา commit ที่ทำให้พังgit bisect start
สรุป commit ตามผู้เขียนgit shortlog -sn
ตั้งชื่อ commit ปัจจุบันโดยนับจาก tag ที่ใกล้ที่สุดgit describe --tags
การทำงานร่วมกับ remote
แสดงรายการหรือเพิ่ม remote repositorygit remote add origin <url>
แสดง remote พร้อม URL สำหรับ fetch และ pushgit remote -v
ดาวน์โหลดการเปลี่ยนแปลงจาก remote โดยไม่แตะ branch ของคุณgit fetch origin
ดาวน์โหลดการเปลี่ยนแปลง และตัด ref ของ branch บน remote ที่ถูกลบgit fetch --prune
fetch และ merge การเปลี่ยนแปลงจาก remote ของ branch ปัจจุบันgit pull --rebase
ส่ง commit ในเครื่องไปยัง remotegit push -u origin feature-x
เขียนทับ branch บน remote แต่เฉพาะเมื่อไม่มีใคร push มาก่อนgit push --force-with-lease origin feature-x
การย้อนการเปลี่ยนแปลง
ทิ้งการเปลี่ยนแปลงใน working tree หรือถอนออกจาก staginggit restore src/app.ts
ถอนไฟล์ออกจาก staging แต่คงการแก้ไขไว้ใน working treegit restore --staged src/app.ts
ย้ายปลายของ branch ปัจจุบัน และตามตัวเลือกคือ index ด้วยgit reset --hard HEAD~1
เพิ่ม commit ใหม่ที่ย้อน commit เดิม (ปลอดภัยต่อการแชร์)git revert HEAD
ลบไฟล์และโฟลเดอร์ที่ไม่ถูกติดตามgit clean -fd
การ stash งาน
เก็บงานที่ยังไม่ commit แล้วรีเซ็ต working treegit stash -u
แสดงทุก stash ที่คุณเก็บไว้git stash list
นำ stash กลับมาใช้โดยยังเก็บไว้ในลิสต์git stash apply stash@{1}
ลบ stash ที่คุณไม่ต้องการแล้วgit stash drop stash@{1}
นำ stash ล่าสุดกลับมาใช้แล้วลบออกจากลิสต์git stash pop
ไฟล์และ submodule
ย้ายหรือเปลี่ยนชื่อไฟล์ แล้ว stage การเปลี่ยนแปลงgit mv old.ts src/new.ts
ลบไฟล์แล้ว stage การลบgit rm src/old.ts
ติดตาม repository อื่นเป็นโฟลเดอร์ภายในอันนี้git submodule add git@github.com:org/lib.git lib
เช็คเอาต์เฉพาะโฟลเดอร์ที่คุณระบุจาก repository ขนาดใหญ่git sparse-checkout set src docs
ส่งออก tree ของ commit เป็นไฟล์ tar หรือ zipgit archive -o repo.zip HEAD