ฉันแก้ไขที่เก็บ GIT ของฉันผ่าน Git Online หลังจากที่ฉันพยายามผลักดันการเปลี่ยนแปลงรหัสในเครื่องของฉันฉันพบข้อผิดพลาด:
Git push failed, To prevent from losing history, non-fast forward updates were rejected.
ฉันจะแก้ไขปัญหานี้ได้อย่างไร?
ฉันแก้ไขที่เก็บ GIT ของฉันผ่าน Git Online หลังจากที่ฉันพยายามผลักดันการเปลี่ยนแปลงรหัสในเครื่องของฉันฉันพบข้อผิดพลาด:
Git push failed, To prevent from losing history, non-fast forward updates were rejected.
ฉันจะแก้ไขปัญหานี้ได้อย่างไร?
คำตอบ:
ดึงการเปลี่ยนแปลงก่อน:
git pull origin branch_name
git pull
? ระยะไกลเท่ากับดังนั้นมันจริงทำงาน:origin
git pull origin
มันควรจะอัพเดททุกสาขาไม่ใช่เหรอ?
เพิ่ม - บังคับในบรรทัดคำสั่งของคุณหากคุณแน่ใจว่าต้องการผลักดัน เช่นใช้git push origin --force
(ฉันขอแนะนำให้ใช้บรรทัดคำสั่งเนื่องจากคุณจะพบการสนับสนุนเพิ่มเติมจากผู้ใช้รายอื่นด้วยบรรทัดคำสั่งนอกจากนี้ SmartGit อาจไม่สามารถทำได้) ดูข้อมูลเพิ่มเติมในไซต์นี้: http://help.github.com/ รีโมท /
--force
ถ้าคุณเป็นคนเดียวที่ใช้สาขานั้น มันทำให้เกิดปัญหาเมื่อแชร์สาขากับนักพัฒนาคนอื่น ๆ
ก่อนที่จะผลักดันให้ดึงคอมไพล์ด้วยตัวเลือก rebase สิ่งนี้จะได้รับการเปลี่ยนแปลงที่คุณทำทางออนไลน์ (ที่มาของคุณ) และนำไปใช้ในพื้นที่จากนั้นเพิ่มการเปลี่ยนแปลงในท้องถิ่นของคุณที่ด้านบน
git pull --rebase
ตอนนี้คุณสามารถกดไปที่รีโมต
git push
สำหรับข้อมูลเพิ่มเติมใช้เวลาดูที่Git rebase อธิบายและบทที่ 3.6 Git กิ่ง - rebasing
git pull --rebase
ลงเอยด้วยThere is no tracking information for the current branch. Please specify which branch you want to rebase against.
ฉันพบข้อผิดพลาดเดียวกันเพียงเพิ่ม"--force"ในคำสั่งก็ใช้งานได้
git push origin master --force
--force
ก็มีประโยชน์
ฉันมีปัญหาเดียวกัน
เหตุผลก็คือสาขาในพื้นที่ของฉันสูญเสียการติดตามไปยังคู่ค้าระยะไกล
หลังจาก
git branch branch_name --set-upstream-to=origin/branch_name
git pull
และการแก้ไขความขัดแย้งที่รวมเข้าด้วยกันฉันสามารถผลักดัน
(หนึ่ง) โซลูชันสำหรับ Netbeans 7.1: ลองดึง สิ่งนี้อาจจะล้มเหลวเช่นกัน ตอนนี้ให้ดูบันทึก (โดยปกติจะแสดงใน IDE ตอนนี้) มีหนึ่งบรรทัดขึ้นไปว่า:
"ดึงล้มเหลวเนื่องจากไฟล์นี้:"
ค้นหาไฟล์นั้นลบ (สำรองข้อมูลไว้ก่อน) โดยปกติจะเป็นไฟล์. gitignore ดังนั้นคุณจะไม่ลบโค้ด ทำซ้ำการผลักดัน ตอนนี้ทุกอย่างควรจะทำงานได้ดี
การใช้--rebase
ตัวเลือกนี้ใช้ได้ผลกับฉัน
git pull <remote> <branch> --rebase
จากนั้นกดไปที่ repo
git push <remote> <branch>
เช่น
git pull origin master --rebase
git push origin master
ฉันมีปัญหาเดียวกัน ฉันแก้ไขด้วย
git checkout <name branch>
git pull origin <name branch>
git push origin <name branch>
checkout
จะเขียนทับการเปลี่ยนแปลงเหล่านี้หรืออย่างน้อยก็จะไม่รวมไว้ในพุช
นี่คือสิ่งที่ได้ผลสำหรับฉัน สามารถพบได้ในเอกสาร git ที่นี่
หากคุณอยู่ในสาขาที่คุณต้องการคุณสามารถทำได้:
git fetch origin
# Fetches updates made to an online repository
git merge origin YOUR_BRANCH_NAME
# Merges updates made online with your local work
พบปัญหาเดียวกันในการแก้ไขให้รันgit
คำสั่งต่อไปนี้
git pull {url} --rebase
git push --set-upstream {url} master
คุณต้องสร้างที่เก็บบน github ก่อน
บางครั้งในขณะที่ดึงจากคอมไพล์ของคุณ HEAD จะหลุดออกไป คุณสามารถตรวจสอบได้โดยป้อนคำสั่ง:
git branch
(HEAD แยกออกจาก 8790704)
ปรมาจารย์
พัฒนา
จะดีกว่าถ้าคุณย้ายไปที่สาขาของคุณและดึงออกจากสาขาของคุณ
git checkout develop
git pull origin develop
git push origin develop