ฉันมีที่เก็บ Git ระยะไกลและฉันต้องย้อนกลับการnกระทำครั้งสุดท้ายเป็นการให้อภัยที่เย็นชา
ฉันมีที่เก็บ Git ระยะไกลและฉันต้องย้อนกลับการnกระทำครั้งสุดท้ายเป็นการให้อภัยที่เย็นชา
คำตอบ:
คุณสามารถใช้git revert <commit>…สำหรับ n commits ทั้งหมดจากนั้นกดตามปกติโดยไม่เปลี่ยนแปลงประวัติ
หรือคุณสามารถ "ย้อนกลับ" git reset --hard HEAD~nกับ หากคุณกำลังผลักดันในที่เก็บสาธารณะหรือที่เก็บที่ใช้ร่วมกันคุณอาจแยกและทำลายงานอื่น ๆ ตามสาขาเดิมของคุณ Git จะป้องกันไม่ให้คุณทำเช่นนั้น แต่คุณสามารถใช้git push -fเพื่อบังคับให้อัปเดตได้
revertจะทำให้สาขาฟีเจอร์ของคุณได้รับการพิจารณาว่ารวม "แล้ว" นั่นเพราะสาขาเหล่านี้จะจริงจะถูกรวมเข้าด้วยกัน แต่การเปลี่ยนแปลงถูกเปลี่ยนกลับ การแก้ไข: เชอร์รี่รับหรือย้อนกลับย้อนกลับกระทำ
reset --hardยังทำให้สาขาคุณลักษณะได้รับการปฏิบัติตามที่ผสานแล้วหรือไม่? สมมติฐานของฉันคือมันจะไม่ (ที่ไหนrevertจะ)
elmarco ถูกต้อง ... ข้อเสนอแนะของเขาดีที่สุดสำหรับที่เก็บที่แชร์ / สาธารณะ (หรืออย่างน้อยสาขาสาธารณะ) หากไม่ได้แชร์ (หรือคุณยินดีที่จะรบกวนผู้อื่น) คุณสามารถส่งข้อความอ้างอิงเฉพาะ:
git push origin old_master:master
หรือหากมีการคอมมิต SHA1 (พูด 1e4f99e ในรูปแบบย่อ) คุณต้องการย้ายกลับไปที่:
git push origin 1e4f99e:master
โชคดีที่ฉันสามารถใช้โซลูชันของ Pat Notzซึ่งลบการกระทำที่ไม่ต้องการออกไปโดยสิ้นเชิง อย่างไรก็ตามในตอนแรกฉันได้รับข้อผิดพลาด
error: failed to push some refs to 'ssh://git@gitrepo.git'
To prevent you from losing history, non-fast-forward updates were rejected*
แต่การเพิ่ม-fอ็อพชันforce ( ) จะเขียนทับข้อผิดพลาดนี้
git push -f origin 52e36b294e:master
หากคุณสามารถเข้าถึง repo ระยะไกลได้โดยตรงคุณสามารถใช้:
git reset --soft <sha1>
สิ่งนี้ใช้ได้ผลเนื่องจากไม่มีความพยายามที่จะแก้ไขไดเร็กทอรีการทำงานที่ไม่มีอยู่จริง สำหรับรายละเอียดเพิ่มเติมโปรดดูคำตอบเดิม:
git reset --hard [sha1]ที่ sha1 คือตัวระบุแฮชคอมมิต