สมมติว่าสาขาของคุณถูกเรียกmasterทั้งที่นี่และจากระยะไกลและระยะไกลของคุณถูกเรียกว่าoriginคุณสามารถทำได้:
git reset --hard <commit-hash>
git push -f origin master
อย่างไรก็ตามคุณควรหลีกเลี่ยงการทำเช่นนี้หากคนอื่นทำงานกับที่เก็บระยะไกลของคุณและดึงการเปลี่ยนแปลงของคุณ ในกรณีดังกล่าวจะเป็นการดีกว่าถ้าคุณย้อนกลับการกระทำที่คุณไม่ต้องการแล้วจึงผลักตามปกติ
อัปเดต:คุณได้อธิบายไว้ด้านล่างว่าคนอื่น ๆ ได้ดึงการเปลี่ยนแปลงที่คุณผลักไว้ดังนั้นจึงเป็นการดีกว่าที่จะสร้างความมุ่งมั่นใหม่ที่จะยกเลิกการเปลี่ยนแปลงเหล่านั้นทั้งหมด มีคำอธิบายที่ดีของตัวเลือกของคุณสำหรับการทำเช่นนี้ในเป็นคำตอบนี้จาก Jakub Narębski วิธีใดสะดวกที่สุดขึ้นอยู่กับจำนวนที่คุณต้องการส่งคืนและวิธีการที่เหมาะสมที่สุดสำหรับคุณ
เนื่องจากคำถามของคุณเป็นที่ชัดเจนว่าคุณเคยใช้git reset --hardในการรีเซ็ตmasterสาขาของคุณแล้วคุณอาจต้องเริ่มต้นโดยใช้git reset --hard ORIG_HEADเพื่อย้ายสาขาของคุณกลับไปที่เดิม (เช่นเคยgit reset --hardตรวจสอบให้แน่ใจว่าgit statusสะอาดอยู่เสมอว่าคุณอยู่ในสาขาที่ถูกต้องและคุณทราบgit reflogว่าเป็นเครื่องมือในการกู้คืนคอมมิชชันที่หายไปอย่างเห็นได้ชัด) คุณควรตรวจสอบORIG_HEADจุดที่ถูกต้องด้วยgit show ORIG_HEADเช่นกัน
การแก้ไขปัญหา:
หากคุณได้รับข้อความเช่น " ! [การปฏิเสธจากระยะไกล] a60f7d85 -> master (การขอ hook ล่วงหน้าถูกปฏิเสธ) "
จากนั้นคุณต้องอนุญาตให้เขียนประวัติสาขาสำหรับสาขาที่ระบุ ใน BitBucket มีข้อความกล่าวว่า "ไม่อนุญาตให้เขียนประวัติสาขาใหม่" มีช่องทำเครื่องหมายชื่อAllow rewriting branch historyที่คุณต้องตรวจสอบ
origin/masterหรือไม่ว่าผู้ใช้รายอื่นไม่ได้ถูกดึงและผลักดัน? การเปลี่ยนประวัติของพื้นที่เก็บข้อมูลสาธารณะ (เช่นไม่ใช่ท้องถิ่น) เป็นสิ่งที่คุณต้องการหลีกเลี่ยงตลอดเวลา