สมมติว่าคุณแยกจากต้นแบบคุณไม่จำเป็นต้องเข้าyourBranch
สู่ขั้นตอนการรีเซ็ตตลอดเวลา:
git checkout yourBranch
git reset --soft HEAD~$(git rev-list --count HEAD ^master)
git add -A
git commit -m "one commit on yourBranch"
คำอธิบาย :
git rev-list --count HEAD ^master
นับการกระทำนับตั้งแต่คุณสร้างสาขาคุณลักษณะของคุณจากต้นแบบ f.ex 20
git reset --soft HEAD~20
จะทำการรีเซ็ตแบบซอฟต์ของการคอมมิท 20 ครั้งล่าสุด นี่จะเป็นการเปลี่ยนแปลงของคุณในไฟล์ แต่จะลบการกระทำ
การใช้งาน :
ใน. bash_profile ของฉันฉันได้เพิ่มนามแฝงสำหรับgisquash
ทำสิ่งนี้ด้วยคำสั่งเดียว:
# squash all commits into one
alias gisquash='git reset --soft HEAD~$(git rev-list --count HEAD ^master)'
หลังจาก reseting git push --force
และการกระทำที่คุณต้องทำ
คำแนะนำ :
หากคุณกำลังใช้ Gitlab> = 11.0 คุณไม่จำเป็นต้องทำเช่นนี้อีกต่อไปเนื่องจากมี ตัวเลือกการแบนเมื่อรวมสาขา

git rebase -i 58333012713fc168bd70ad00d191b3bdc601fa2d
จะให้การตอบโต้แบบโต้ตอบโดยที่จำนวนการส่งมอบครั้งสุดท้ายนั้นไม่เปลี่ยนแปลง