โปสเตอร์ต้นฉบับระบุ:
คำตอบที่ดีที่สุดที่ใครบางคนสามารถให้ฉันได้คือการใช้git revertX ครั้งจนกว่าฉันจะถึงความมุ่งมั่นที่ต้องการ
สมมุติว่าฉันต้องการกลับไปใช้ความมุ่งมั่นที่อายุ 20 คอมมิทฉันจะต้องรันมัน 20 ครั้ง
มีวิธีที่ง่ายกว่านี้หรือไม่?
ฉันใช้การรีเซ็ตไม่ได้เพราะ repo นี้เป็นแบบสาธารณะ
ไม่จำเป็นต้องใช้git revertX คูณ git revertสามารถยอมรับช่วงการยอมรับเป็นอาร์กิวเมนต์ดังนั้นคุณจะต้องใช้เพียงครั้งเดียวเพื่อเปลี่ยนช่วงของการกระทำ ตัวอย่างเช่นหากคุณต้องการเปลี่ยนการยอมรับ 20 ครั้งล่าสุด:
git revert --no-edit HEAD~20..
กระทำช่วงHEAD~20..สั้นสำหรับHEAD~20..HEADและวิธีการ "เริ่มต้นจาก 20 วันที่แม่ของ HEAD กระทำและย้อนกลับไปกระทำทั้งหมดหลังจากมันขึ้นอยู่กับหัว"
ที่จะคืนค่าการยอมรับ 20 ครั้งล่าสุดโดยสมมติว่าไม่มีการรวมรายการเหล่านั้น หากมีการรวมการกระทำคุณจะไม่สามารถเปลี่ยนกลับทั้งหมดในคำสั่งเดียวคุณจะต้องเปลี่ยนพวกเขากลับเป็นรายบุคคลด้วย
git revert -m 1 <merge-commit>
โปรดทราบว่าฉันได้ทดสอบด้วยช่วงgit revertโดยใช้ git เวอร์ชัน 1.9.0 หากคุณกำลังใช้คอมไพล์รุ่นเก่ากว่าการใช้ช่วงที่มีgit revertหรืออาจใช้ไม่ได้
ในกรณีนี้เป็นที่ต้องการมากกว่าgit revertgit checkout
หมายเหตุว่าแตกต่างจากคำตอบนี้ที่บอกว่าจะใช้git checkout , git revert
จริงจะลบไฟล์ใด ๆ ที่ถูกเพิ่มเข้ามาในใด ๆ ของกระทำที่คุณกำลังย้อนกลับซึ่งทำให้นี้วิธีที่ถูกต้องเพื่อย้อนกลับไปช่วงของการแก้ไข
เอกสาร