ข้ามไปยังเนื้อหา
Tayakorn
Git Handbook

Git Handbook

LEVEL 2 · ระดับกลาง

Stash · Cherry-pick · Tag

สามเครื่องมือที่ไม่ได้ใช้ทุกวัน แต่วันที่ต้องใช้มันช่วยได้มาก

9.1 stash — พักงานค้างไว้ชั่วคราว

กำลังแก้อยู่ครึ่งทาง แล้วต้องรีบสลับไปแก้บั๊กด่วนอีก branch? git stash เก็บงานที่ยังไม่ commit เข้าที่พักชั่วคราว คืนโฟลเดอร์ให้สะอาด พอกลับมาก็ git stash pop เอางานออกมาทำต่อ — เหมือนกวาดของบนโต๊ะใส่ลิ้นชักไว้ก่อน แล้วหยิบกลับมาทีหลัง

$ git stash            # เก็บงานค้าง โฟลเดอร์กลับมาสะอาด
$ git switch hotfix    # ไปทำงานด่วน
$ git stash pop        # กลับมาเอางานค้างออกมาทำต่อ

9.2 cherry-pick — หยิบ commit เดี่ยวข้าม branch

บางที branch อื่นมี commit ที่เราอยากได้แค่ดวงเดียว ไม่ใช่ทั้ง branch git cherry-pick <commit> ก๊อปการเปลี่ยนแปลงของ commit นั้นมาวางบน branch ปัจจุบัน เช่นดึงเฉพาะ commit แก้บั๊กเร่งด่วนมาใส่ branch release โดยไม่เอาฟีเจอร์ที่ยังไม่เสร็จมาด้วย

9.3 tag — ปักหมุดเวอร์ชันสำคัญ

ขณะที่ branch ขยับไปเรื่อย ๆ tag คือป้ายถาวรที่ปักลง commit หนึ่งแล้วไม่ขยับ ใช้ทำเครื่องหมายเวอร์ชันที่ปล่อยจริง เช่น v1.0.0 มีสองชนิด: lightweight (แค่ชื่อ) และ annotated (มีผู้สร้าง วันที่ ข้อความ — แนะนำสำหรับ release จริง)

$ git tag -a v1.0.0 -m "ปล่อยเวอร์ชันแรก"
$ git push origin v1.0.0   # tag ไม่ถูก push ไปกับ push ปกติ ต้องส่งเอง

สรุปบทที่ 9stash พักงานค้างชั่วคราวเพื่อสลับไปทำอย่างอื่น แล้ว pop กลับมา · cherry-pick หยิบ commit เดี่ยวข้าม branch · tag ปักหมุดถาวรลงเวอร์ชันสำคัญ (annotated สำหรับ release) และต้อง push แยกต่างหาก

อ่านแบบเต็มเล่ม