คุณเห็นคุณลักษณะความปลอดภัยของ 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
คือลบสาขาระยะไกล ชื่อสาขาที่ไม่มี:
วิธีผลักสาขาท้องถิ่นด้วยชื่อที่กำหนดไปยังสาขาระยะไกลที่มีชื่อเดียวกัน ในสถานการณ์เช่นนี้สั้นสำหรับmaster
master:master