สมมติว่าคุณแยกจากต้นแบบคุณไม่จำเป็นต้องเข้า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จะให้การตอบโต้แบบโต้ตอบโดยที่จำนวนการส่งมอบครั้งสุดท้ายนั้นไม่เปลี่ยนแปลง