คุณเห็นคุณลักษณะความปลอดภัยของ Git Git ปฏิเสธที่จะอัปเดตสาขาระยะไกลด้วยสาขาของคุณเนื่องจากการกระทำที่หัวหน้าสาขาของคุณไม่ได้เป็นผู้สืบทอดโดยตรงของการกระทำที่หัวหน้าปัจจุบันของสาขาที่คุณกำลังผลักดัน
หากไม่ใช่กรณีนี้คนสองคนที่ผลักดันไปยังแหล่งเก็บข้อมูลเดียวกันในเวลาเดียวกันจะไม่ทราบว่ามีการกระทำใหม่เข้ามาในเวลาเดียวกัน พวกเขาตระหนักถึงสิ่งนี้
หากคุณรู้ว่าคุณเป็นคนเดียวที่ผลักดันและคุณต้องการที่จะผลักดันการกระทำที่แก้ไขหรือผลักดันการกระทำที่ย้อนกลับสาขาคุณสามารถ 'บังคับ' Git เพื่ออัปเดตสาขาระยะไกลโดยใช้-fสวิตช์
git push -f origin master
แม้เรื่องนี้อาจไม่ทำงานตาม Git ช่วยให้เก็บระยะไกลที่จะปฏิเสธการผลักดันไม่ใช่ fastforward receive.denynonfastforwardsที่ปลายสุดโดยใช้ตัวแปรการกำหนดค่า หากเป็นกรณีนี้เหตุผลการปฏิเสธจะมีลักษณะเช่นนี้ (โปรดสังเกตส่วน 'การปฏิเสธระยะไกล'):
! [remote rejected] master -> master (non-fast forward)
ในการหลีกเลี่ยงปัญหานี้คุณต้องเปลี่ยนการกำหนดค่าของที่เก็บระยะไกลหรือแฮ็คสกปรกคุณสามารถลบและสร้างสาขาใหม่ได้:
git push origin :master
git push origin master
โดยทั่วไปพารามิเตอร์สุดท้ายที่จะgit pushใช้รูปแบบ<local_ref>:<remote_ref>โดยที่local_refชื่อของสาขาบนที่เก็บท้องถิ่นและremote_refเป็นชื่อของสาขาในพื้นที่เก็บข้อมูลระยะไกล คู่คำสั่งนี้ใช้ชวเลขสองตัว :masterมี null local_ref ซึ่งหมายถึงผลักสาขาเป็นโมฆะไปยังด้านระยะไกลmasterคือลบสาขาระยะไกล ชื่อสาขาที่ไม่มี:วิธีผลักสาขาท้องถิ่นด้วยชื่อที่กำหนดไปยังสาขาระยะไกลที่มีชื่อเดียวกัน ในสถานการณ์เช่นนี้สั้นสำหรับmastermaster:master