คุณต้องย้อนกลับและเลือกจากคอมมิตกี่ข้อ? หากเป็นเพียงสาขาเดียวอาจใช้สาขาก่อนหน้านั้นเช็คเอาต์ไฟล์ที่คุณกำหนดแล้วใช้git add -pเพิ่มตามที่คุณต้องการ จากนั้นคุณสามารถกลับไปที่ที่คุณอยู่และชำระเงินไฟล์จากสาขาชั่วคราวของคุณ
นั่นคือ:
git checkout -b temp troublesome-commit^
git checkout troublesome-commit -- path/to/file
git add -p path/to/file
git commit -c troublesome-commit
git checkout @{-1}
git checkout temp -- path/to/file
git commit path/to/file
git branch -D temp
ทางเลือกอื่น ๆ ได้แก่ การย้อนกลับและแก้ไขคอมมิตด้วยgit rebase -i(ทำเครื่องหมายคอมมิตเป็นeditแล้วทำgit reset HEAD^และทำซ้ำคอมมิตเมื่อปล่อยกลับเข้าไปในเชลล์)
หากการเปลี่ยนแปลงที่คุณต้องเลือกถูกกระจายไปตามชุดการคอมมิตอาจเป็นการดีกว่าที่จะแยกออกเป็นแพตช์ (หรือแพตช์ที่ครอบคลุมทั้งหมด) และแก้ไขแพตช์ด้วยมือโดยทำการเปลี่ยนแปลงที่คุณต้องการเก็บไว้ git apply --reverseและการให้อาหารเข้าไปในส่วนที่เหลือ