Github“ การอัปเดตถูกปฏิเสธเพราะรีโมทมีงานที่คุณไม่มี”


176

ฉันสร้าง repo ใหม่โคลนมันเพิ่มไฟล์ไปยังไดเรกทอรีเพิ่มพวกเขาด้วยadd -Aการเปลี่ยนแปลงที่มุ่งมั่นและเมื่อฉันพยายามที่จะผลักดันโดยใช้git push <repo name> masterฉันได้รับ "การปรับปรุงถูกปฏิเสธเพราะระยะไกลมีงานที่คุณไม่มี"

ดูเหมือนจะไม่สมเหตุสมผลเนื่องจากเป็น repo ใหม่และมีไฟล์ readme เท่านั้น

คำตอบ:


308

สิ่งนี้จะเกิดขึ้นหากคุณเริ่มต้น repo github ใหม่ด้วยREADMEและ / หรือLICENSEไฟล์

git remote add origin [//your github url]

//pull those changes

git pull origin master 

// or optionally, 'git pull origin master --allow-unrelated-histories' if you have initialized repo in github and also committed locally

//now, push your work to your new repo

git push origin master

ตอนนี้คุณจะสามารถผลักดันพื้นที่เก็บข้อมูลของคุณเพื่อ GitHub โดยทั่วไปคุณต้องรวมไฟล์ที่เริ่มต้นใหม่เหล่านั้นเข้ากับงานของคุณ git pullดึงข้อมูลและรวมเข้าด้วยกันสำหรับคุณ นอกจากนี้คุณยังสามารถดึงข้อมูลและผสานหากมันเหมาะกับคุณ


7
ฉันสร้างวิดีโอ YouTubeพร้อมคำอธิบายโดยละเอียดและสองวิธีที่แนะนำเพื่อหลีกเลี่ยงปัญหานี้ตั้งแต่แรก
Kevin Markham

16
สำหรับคำสั่งผสานฉันจำเป็นต้องใช้git pull origin master --allow-unrelated-histories
Luciano Marqueto

ฉันได้รับ "ถึงแก่ชีวิต: ปฏิเสธที่จะรวมประวัติศาสตร์ที่ไม่เกี่ยวข้อง"
Sergi

4
@Sergi ลองgit pull origin master --allow-unrelated-histories
palerdot

101

ข้อผิดพลาดอาจเกิดขึ้นเนื่องจากโครงสร้างที่แตกต่างกันของรหัสที่คุณยืนยันและมีอยู่ใน GitHub มันสร้างความขัดแย้งซึ่งสามารถแก้ไขได้โดย

git pull

ผสานการแก้ไขข้อขัดแย้ง:

git push

หากคุณยืนยันว่ารหัสใหม่ของคุณใช้ได้ทั้งหมดคุณสามารถใช้:

git push -f origin master

ที่-fหมายถึง "บังคับกระทำ" ที่


13
'git push -f master master' - สิ่งนี้ช่วย
Saurabh

4
git push -f เขียนทับประวัติระยะไกลด้วยประวัติท้องถิ่นของคุณระวังเมื่อใช้ โดยเฉพาะอย่างยิ่งในที่เก็บของสาธารณะ
Andre

updates-were-rejectedยังเกิดขึ้นหากคุณทำการเปลี่ยนแปลงใน repo Github ในระยะไกลเช่น: ทำการเปลี่ยนแปลงบางอย่างในไฟล์ readme โดยใช้ Github Gui และจากนั้นพยายามที่จะผลักดันงานใหม่ของคุณไปยัง GitHub มันจะแสดงข้อความนี้บอกว่าการเปลี่ยนแปลงที่คุณทำในระยะไกล แต่มันไม่ได้อยู่ในท้องถิ่น
Deke

13

หากนี่คือการผลักดันครั้งแรกของคุณ

เพียงแค่เปลี่ยน

git push <repo name> master

เปลี่ยนมันเป็นแบบนี้!

git push -f <repo name> master

1
สิ่งนี้จะทิ้งไฟล์เช่นสร้างครั้งแรกในที่มา ใช้คำสั่ง a git pullก่อนเพื่อรับไฟล์ระยะไกลและทำการคอมมิทของคุณ เช่นเดียวกับรัฐตอบรับ
JayJay

@jayjaybricksoft ขอบคุณสำหรับความคิดเห็นของคุณ มันเป็นการพุชครั้งแรกดังนั้นการแทนที่ไฟล์ต้นฉบับก็โอเค
Mahyar


2

คำตอบที่ให้มาไม่ได้สำหรับฉัน

ฉันมี repo ที่ว่างบน GitHub ด้วยไฟล์ LICENSE เท่านั้นและคอมมิทเดียวที่กระทำในเครื่อง สิ่งที่ทำงานคือ:

$ git fetch
$ git merge --allow-unrelated-histories
Merge made by the 'recursive' strategy.
 LICENSE | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 LICENSE

ก่อนที่mergeคุณจะต้องการ:

$ git branch --set-upstream-to origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.

0

ฉันทำตามขั้นตอนเหล่านี้:

ดึงต้นแบบ:

git pull origin master

สิ่งนี้จะซิงค์ repo ท้องถิ่นของคุณกับ Github repo เพิ่มไฟล์ใหม่ของคุณแล้ว:

git add .

ยอมรับการเปลี่ยนแปลง:

git commit -m "adding new file  Xyz"

ในที่สุดผลักต้นแบบหลัก:

git push origin master

รีเฟรช repo Github ของคุณคุณจะเห็นไฟล์ที่เพิ่มเข้ามาใหม่


0

หากคุณใช้ Visual S2019 ให้สร้างสาขาใหม่ตามที่แสดงในรายการด้านล่างจากนั้นผลักดันการเปลี่ยนแปลงไปยัง repo VS2019 สาขาท้องถิ่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.