หากคุณต้องการเปลี่ยนการคอมมิตช่วง B เป็น D (อย่างน้อยก็ใน git เวอร์ชัน 2) ในคอมมิตเดียวคุณสามารถทำได้
git revert -n B^..D
สิ่งนี้จะเปลี่ยนกลับการเปลี่ยนแปลงที่ทำโดยคอมมิตจากพาเรนต์คอมมิต (ไม่รวม) เป็นคอมมิต D (รวม) แต่จะไม่สร้างคอมมิตใด ๆ กับการเปลี่ยนแปลงที่เปลี่ยนกลับ การย้อนกลับจะปรับเปลี่ยนโครงสร้างการทำงานและดัชนีเท่านั้น
อย่าลืมที่จะยอมรับการเปลี่ยนแปลงหลังจากนั้น
git commit -m "revert commit range B to D"
คุณยังสามารถย้อนกลับการคอมมิตที่ไม่เกี่ยวข้องหลายครั้งในคอมมิตเดียวโดยใช้วิธีการเดียวกัน ตัวอย่างเช่นในการเปลี่ยนกลับ B และ D แต่ไม่ใช่ C
git revert -n B D
git commit -m "Revert commits B and D"
อ้างอิง: https://www.kernel.org/pub/software/scm/git/docs/git-revert.html
ขอบคุณHonza Haeringสำหรับการแก้ไข