หากคุณยังไม่ได้ทำอะไรเลยเพียง (1: สาขา) และ (3: เช็คเอาต์) จะเพียงพอ
หรือในหนึ่งคำสั่ง:git checkout -b newBranch
ดังที่ได้กล่าวไว้ในgit reset
man page :
$ git branch topic/wip # (1)
$ git reset --hard HEAD~3 # (2) NOTE: use $git reset --soft HEAD~3 (explanation below)
$ git checkout topic/wip # (3)
- คุณได้ทำอะไรบางอย่าง แต่รู้ตัวว่ามันเร็ว
master
เกินไปที่จะอยู่ในสาขา "" คุณต้องการที่จะดำเนินการต่อไปขัดพวกเขาในสาขาหัวข้อเพื่อสร้าง " topic/wip
สาขา" HEAD
ออกจากปัจจุบัน
- กรอกลับ
master
สาขาเพื่อกำจัดการกระทำทั้งสาม
- สลับไปที่
topic/wip
สาขา "" และทำงานต่อไป
หมายเหตุ: เนื่องจากผลกระทบของ "การทำลายล้าง" ของgit reset --hard
คำสั่ง (จะรีเซ็ตดัชนีและแผนผังการทำงานการเปลี่ยนแปลงใด ๆ กับไฟล์ที่ถูกติดตามในแผนผังการทำงานตั้งแต่<commit>
ถูกทิ้ง) ฉันอยากจะไปกับ:
$ git reset --soft HEAD~3 # (2)
สิ่งนี้จะทำให้แน่ใจว่าฉันจะไม่สูญเสียไฟล์ส่วนตัวใด ๆ (ไม่ได้เพิ่มไว้ในดัชนี) ตัวเลือกที่จะไม่สัมผัสแฟ้มดัชนีมิได้ต้นทำงานเลย ( แต่รีเซ็ตหัวเช่นเดียวกับทุกโหมดทำ)
--soft
<commit>
ด้วยGit 2.23+ที่คำสั่งใหม่git switch
จะสร้างสาขาในหนึ่งบรรทัด (ที่มีชนิดเดียวกันreset --hard
ดังนั้นจงระวังของผลกระทบของมัน):
git switch -f -c topic/wip HEAD~3