ฉันได้ตั้งค่า repo "main" ระยะไกลที่ไม่ได้เปลือยเปล่าและโคลนไปยังคอมพิวเตอร์ของฉัน ฉันทำการเปลี่ยนแปลงภายในเครื่องอัปเดตที่เก็บในเครื่องของฉันและผลักดันการเปลี่ยนแปลงกลับไปที่ repo ระยะไกลของฉัน สิ่งต่าง ๆ ได้ดีจนถึงจุดนั้น
ตอนนี้ฉันต้องเปลี่ยนอะไรบางอย่างใน repo ระยะไกล จากนั้นฉันเปลี่ยนบางสิ่งบางอย่างใน repo ท้องถิ่นของฉัน ฉันรู้ว่าไม่จำเป็นต้องเปลี่ยนรีโมตรีโมต ดังนั้นฉันจึงพยายามgit push
จาก repo ท้องถิ่นของฉันไปยัง repo ระยะไกลของฉัน แต่ฉันได้รับข้อผิดพลาดเช่น:
เพื่อป้องกันไม่ให้คุณสูญเสียประวัติการอัปเดตที่ไม่ใช่การส่งต่ออย่างรวดเร็วถูกปฏิเสธรวมการเปลี่ยนแปลงระยะไกลก่อนที่จะผลักดันอีกครั้ง ดูหมายเหตุเกี่ยวกับการส่งต่ออย่างรวดเร็ว 'ส่วนของ
git push --help
รายละเอียด
ฉันคิดว่าอาจจะเป็น
git push --force
จะบังคับให้สำเนาในเครื่องของฉันกดการเปลี่ยนแปลงที่รีโมทหนึ่งอันและทำให้เหมือนเดิม มันบังคับให้มีการอัปเดตแต่เมื่อฉันกลับไปที่รีโมตรีโมตและทำการคอมมิตฉันสังเกตว่าไฟล์มีการเปลี่ยนแปลงที่ล้าสมัย
ดังที่ฉันได้กล่าวถึงในความคิดเห็นกับหนึ่งในคำตอบ :
[I] พยายามบังคับใช้ แต่เมื่อกลับไปที่เซิร์ฟเวอร์หลักเพื่อบันทึกการเปลี่ยนแปลงฉันจะเลิกแสดงละครที่ล้าสมัย ดังนั้นเมื่อฉันยอมรับที่เก็บไม่เหมือนกัน และเมื่อฉันพยายามใช้ git push อีกครั้งฉันได้รับข้อผิดพลาดเดียวกัน
ฉันจะแก้ไขปัญหานี้ได้อย่างไร
git push --force
เป็นที่แน่นอนอีกวิธีที่ถูกต้องในการผลักดันแรงและจะผลักดันสาขาเพียงเช่นเดียวกับgit push origin master --force
ที่มีการเริ่มต้น Git ของpush.default config settings
แต่ที่สาขาเฉพาะได้รับการผลักดันให้มีความแตกต่างระหว่างรุ่น Git ก่อน 2.0 เมื่อเทียบกับหลัง 2.0
git push --force
ทำงานได้ดีวันนี้ FWIW ...
git push --force-with-lease
ทำงานได้ดียิ่งขึ้น :) มันจะปฏิเสธที่จะอัปเดตสาขาจนกว่าจะเป็นสถานะที่คุณคาดหวัง (ดูdeveloper.atlassian.com/blog/2015/04/force-with-
git push -force
อย่างระมัดระวังมากขึ้น