โปสเตอร์ต้นฉบับระบุ:
คำตอบที่ดีที่สุดที่ใครบางคนสามารถให้ฉันได้คือการใช้git revert
X ครั้งจนกว่าฉันจะถึงความมุ่งมั่นที่ต้องการ
สมมุติว่าฉันต้องการกลับไปใช้ความมุ่งมั่นที่อายุ 20 คอมมิทฉันจะต้องรันมัน 20 ครั้ง
มีวิธีที่ง่ายกว่านี้หรือไม่?
ฉันใช้การรีเซ็ตไม่ได้เพราะ repo นี้เป็นแบบสาธารณะ
ไม่จำเป็นต้องใช้git revert
X คูณ 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 revert
git checkout
หมายเหตุว่าแตกต่างจากคำตอบนี้ที่บอกว่าจะใช้git checkout
, git revert
จริงจะลบไฟล์ใด ๆ ที่ถูกเพิ่มเข้ามาในใด ๆ ของกระทำที่คุณกำลังย้อนกลับซึ่งทำให้นี้วิธีที่ถูกต้องเพื่อย้อนกลับไปช่วงของการแก้ไข
เอกสาร