ปัญหาในการกดรหัสใหม่ใน Github


147

ฉันสร้างที่เก็บใหม่บน Github ซึ่งมีไฟล์ Readme.md เท่านั้นในตอนนี้

ฉันมีโครงการ RoR ที่เพิ่งสร้างใหม่ซึ่งฉันต้องการผลักดันไปยังพื้นที่เก็บข้อมูลนี้ ต่อไปนี้เป็นคำสั่งที่ฉันให้ใน Terminal เพื่อดำเนินการนี้พร้อมกับข้อผิดพลาดที่ฉันได้รับ

git remote add origin https://github.com/aniruddhabarapatre/learn-rails.git

หลังจากนั้นฉันป้อนชื่อผู้ใช้และรหัสผ่านของฉัน

git push -u origin master

ข้อผิดพลาด ---

To https://github.com/aniruddhabarapatre/learn-rails.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/aniruddhabarapatre/learn-rails.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

นี่เป็นครั้งแรกที่ฉันผลักรหัสของฉันไปยังที่เก็บ Github และฉันพลาดข้อผิดพลาด ฉันค้นหาคำถามอื่น ๆ สองสามข้อที่ถามที่นี่ แต่ไม่มีใครมีปัญหาในครั้งแรก


คำตอบ:


167

เมื่อคุณสร้างพื้นที่เก็บข้อมูลของคุณบน GitHubคุณสร้างREADME.mdซึ่งเป็นใหม่กระทำ

ที่เก็บในเครื่องของคุณยังไม่ทราบเกี่ยวกับการกระทำนี้ ดังนั้น:

การอัปเดตถูกปฏิเสธเนื่องจากรีโมตมีงานที่คุณไม่มีในเครื่อง

คุณอาจต้องการทำตามคำแนะนำนี้:

คุณอาจต้องการรวมการเปลี่ยนแปลงระยะไกลก่อน (เช่น ' git pull') ก่อนที่จะผลักดันอีกครั้ง

นั่นคือ:

git pull
# Fix any merge conflicts, if you have a `README.md` locally
git push -u origin master

3
สิ่งที่ฉันทำคือต้นแบบต้นกำเนิด git pull แล้วดันอีกครั้ง
Bagusflyer

12
ในบางกรณีคุณอาจได้รับfatal: refusing to merge unrelated historiesในกรณีเช่นนี้คุณส่งgit pull --allow-unrelated-histories origin masterและจากนั้นคุณผลักดันตามคำตอบข้างต้น
TheLebDev

1
ใช้งานไม่ได้สำหรับฉัน รีโมต: กดปฏิเสธ รีโมต: รีโมต: refs / heads / master: ... : ชื่อผู้ส่งที่คาดหวัง xxx แต่พบ yyy ฉันทำ git config - ผู้ใช้ทั่วโลกอีเมล yyy และมันก็ยังจำไม่ได้ ไม่สามารถบังคับอะไรได้ !!!
บารุคอัตตา

284

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

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

git push **-u** origin master

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

git push -f origin master

5
นี่เป็นการลบไฟล์ readme ของฉันที่ฉันใส่ไว้ใน GitHub ก่อน ตอนนี้ดูเหมือนว่าฉันต้องทำให้มันอีกครั้ง
แจ็คว่างเปล่า

3
คุณอาจเพิ่มคำเตือนว่า -f บังคับการกดและอาจยุ่งกับไทม์ไลน์ของรหัส
ericksho

นี่เป็นวิธีที่ไม่ดีมันทำให้ฉันมีปัญหาลบ readme ซึ่งไม่ได้สร้างขึ้นโดยฉันตอนนี้ฉันต้องโทรหาผู้ดูแลบอกเขาว่าฉันโง่ขอโทษที่สร้างฉันขึ้นมาอีกครั้ง :(
Mohammad Elsayed

62

⚡️ง่าย: ทุกสิ่งที่คุณต้องการคือการถูกบังคับ เพราะคุณอาจสร้างreadme.mdไฟล์บน Github และคุณยังไม่ได้ดึงมัน

git push -f origin master

และนี่คือ GIF

git push -f origin master

EW ระวัง : การใช้forceสามารถเปลี่ยนประวัติสำหรับคนอื่น ๆ ในโครงการเดียวกัน โดยทั่วไปหากคุณไม่สนใจว่าไฟล์จะถูกลบสำหรับทุกคนเพียงแค่ดำเนินการต่อไป โดยเฉพาะอย่างยิ่งถ้าคุณเป็นผู้พัฒนาโครงการเพียงคนเดียว


1
หมายเหตุวิธีการนี้จะเปลี่ยนประวัติที่ผู้ใช้คนอื่น ๆ ของที่เก็บนี้ดึงมาแล้ว git push -f origin masterไม่ใช่นิสัยที่ดีในการสร้าง
Johnsyweb

1
วิธีนี้อาจแก้ปัญหาการส่งข้อมูลได้ แต่ยังลบการกระทำที่ผ่านมาทั้งหมด
twenk11k

2
ระวัง noith Github ... ถ้าคุณสร้าง Readme.md ผ่าน GitHub คำสั่งนี้จะลบมันออกไปเพราะมันจะผลักดันการเปลี่ยนแปลงใหม่ของคุณ
daCoda

นั่นคือเหตุผลที่คนส่วนใหญ่มาถึงที่นี่ -fแท็กลบไฟล์และควรใช้ด้วยความระมัดระวัง
Ahmad Awais

34

ออกคำสั่งบังคับด้วยคำสั่ง:

git push -f origin master

10
หมายเหตุสิ่งนี้อาจลบการกระทำที่ผ่านมาซึ่งอาจเป็นที่ต้องการหรือไม่เหมาะสม
Crashalot

8

สมมติว่าคุณเพิ่มไฟล์ Readme.md ผ่านทางส่วนต่อประสานที่จัดทำโดย github นั้น readme ยังไม่ได้อยู่ในโฟลเดอร์ในเครื่องของคุณ ดังนั้นเมื่อคุณพยายามที่จะผลักดันไปยัง repo ระยะไกลคุณจะได้รับข้อผิดพลาดเนื่องจาก repo ในพื้นที่ของคุณขาดไฟล์ readme - มันคือ "ล้าหลัง" ดังนั้นต้องพูด ดังนั้นตามที่แนะนำในข้อความแสดงข้อผิดพลาดลอง "git pull" ก่อน สิ่งนี้จะดึง readme จากที่เก็บระยะไกลและรวมเข้ากับไดเรกทอรีท้องถิ่นของคุณ หลังจากนั้นคุณไม่ควรมีปัญหาในการผลักดันไปยัง repo ระยะไกล (คำสั่งที่คุณโพสต์ดูใช้ได้กับฉัน)


6

สิ่งนี้เกิดขึ้นเมื่อคุณพยายามผลักดันในขั้นต้นเนื่องจากใน repo GitHub ของคุณมี readMe.md หรือสิ่งใหม่อื่น ๆ ที่ไม่ได้อยู่ใน repo ท้องถิ่นของคุณ ก่อนอื่นคุณต้องรวมประวัติที่ไม่เกี่ยวข้องของ repo git ของคุณเพื่อทำเช่นนั้น

git pull origin master --allow-unrelated-histories

จากนั้นคุณสามารถรับไฟล์อื่น ๆ จาก repo (readMe.md หรืออื่น ๆ ) โดยใช้สิ่งนี้

git pull origin master

หลังจากนั้น

git push -u origin master

ตอนนี้คุณประสบความสำเร็จในการผลักดันการเปลี่ยนแปลงทั้งหมดของคุณไปสู่ ​​Github repo ฉันไม่ชำนาญเรื่องคอมไพล์ แต่ทุกครั้งที่ขั้นตอนเหล่านี้ใช้ได้ผลสำหรับฉัน


5

พิจารณาว่าคุณยังไม่ได้ยืนยันการเปลี่ยนแปลงในขณะนี้อาจเป็นการดีสำหรับคุณ

git add files
git commit -m "Your Commit"
git push -u origin master

ที่ได้ผลสำหรับฉันหวังว่ามันจะให้คุณเช่นกัน


3

หากคุณใช้ git สำหรับ mac ใน GUI คุณสามารถเลือก Respository-> Pull หรือ "comm + shift + p" เป็น "git pull" ก่อนแล้วจึงเผยแพร่แหล่งที่มา


3

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณส่งข้อมูลจากไดเรกทอรีท้องถิ่นของคุณไปยังที่เก็บ git ระยะไกลของคุณโดยทำตามคำสั่ง git: git push -u origin master

เนื่องจากไดเรกทอรีท้องถิ่นและไฟล์ของไดเรกทอรีระยะไกลคอมไพล์ขัดแย้งกัน

สารละลาย :

หลังจากส่งไฟล์ทั้งหมดไปยังการจัดเตรียมตามขั้นตอนด้านล่าง

  1. ดึงไฟล์จากที่เก็บรีโมตเนื่องจากขัดแย้งกับไดเร็กทอรีการทำงานโลคัล

    • git pull <remoter-url> <branch-name>
  2. ยอมรับการเปลี่ยนแปลงอีกครั้ง

    • git add -A
    • git commit -m ‘<comment>'
  3. หลังจากรวมไฟล์ที่คอมมิทด้วยทั้งสองไดเรกทอรีแล้วคุณสามารถใช้ได้

    • git push -u origin master

สิ่งนี้จะแก้ไขปัญหา ขอบคุณ


1

ฉันมีปัญหาที่คล้ายกัน ... ฉันแก้ไขได้เช่นนี้ (ฉันไม่ใช่ผู้เชี่ยวชาญคอมไพล์ดังนั้นฉันไม่รู้ว่านี่เป็นวิธีที่ถูกต้องหรือไม่ แต่มันได้ผลสำหรับฉัน):

git pull origin master --allow-unrelated-histories
git merge origin origin/master
git rm README.md
git commit -m 'removed readme.md'
git push origin master

0

ฉันต่อสู้กับข้อผิดพลาดนี้มานานกว่าหนึ่งชั่วโมง! ด้านล่างคือสิ่งที่ช่วยให้ฉันแก้ไขได้ ทั้งหมดนี้ในขณะที่ไดเรกทอรีการทำงานของฉันคือ repo ฉันได้โคลนในระบบของฉัน

หากคุณกำลังเพิ่มไฟล์ลงในที่เก็บข้อมูลที่มีอยู่ของคุณ ** 1. ฉันดึงทุกอย่างที่ฉันเพิ่มลงในที่เก็บของฉันไปยังโฟลเดอร์ GitHub ของฉัน:

git pull


เอาต์พุตเป็นไฟล์ readme บางไฟล์ file1 file2

  1. ฉันคัดลอก (ลากแล้ววาง) ไฟล์ใหม่ของฉัน (ไฟล์ที่ฉันต้องการผลักดัน) ไปยังที่เก็บโคลนของฉัน (GitHub repo) เมื่อคุณจะ ls repo นี้คุณควรเห็นไฟล์เก่าและใหม่ของคุณ

เช่น. บางไฟล์ readme file1 file2 newfile1 newfile2

  1. git เพิ่ม "newfile1" "newfile2"

  2. [ไม่บังคับ] สถานะคอมไพล์จะช่วยให้คุณมั่นใจได้ว่าไฟล์ที่คุณต้องการเพิ่มนั้นมีการจัดฉากอย่างเหมาะสม


ในสาขาหลักสาขาของคุณทันสมัยกับ 'ต้นกำเนิด / ต้นแบบ' การเปลี่ยนแปลงที่จะเกิดขึ้น: (ใช้ "git reset HEAD ... " เป็น unstage)

    new file:   newfile1
    new file:   newfile2

5.git กระทำ -m "คำอธิบายใด ๆ ที่คุณต้องการให้" 6.git push

และไฟล์ใหม่ทั้งหมดของฉันพร้อมกับไฟล์เก่านั้นมีอยู่ใน repo ของฉัน


0

คำตอบที่ง่ายกว่าคือการอัพโหลดไฟล์ README.MD จากคอมพิวเตอร์ของคุณไปยัง GitHub ด้วยตนเอง ทำงานได้ดีมากสำหรับฉัน


0

ฉันใช้ตัวเลือก Branches จากนั้นคลิกขวาที่โฟลเดอร์ "remote / origin" จากนั้นคลิกที่ "delete branch from remote" ดูภาพด้านล่าง:

รูปภาพ


0

ฉันได้รับข้อผิดพลาดนี้ใน Azure Git และวิธีนี้แก้ปัญหาได้:

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