ข้อความ 'src refspec master ไม่ตรงกับ' เมื่อกดคอมมิทใน Git


2689

ฉันโคลนที่เก็บของฉันด้วย:

git clone ssh://xxxxx/xx.git 

แต่หลังจากที่ผมเปลี่ยนบางไฟล์และaddและcommitพวกเขาก็ต้องการที่จะผลักดันพวกเขาไปยังเซิร์ฟเวอร์:

git add xxx.php
git commit -m "TEST"
git push origin master

แต่ข้อผิดพลาดที่ฉันได้รับกลับมาคือ:

error: src refspec master does not match any.  
error: failed to push some refs to 'ssh://xxxxx.com/project.git'

26
@Marco นั่นไม่ซ้ำกัน นั่นเป็นปัญหาที่เฉพาะเจาะจงมากเกี่ยวกับการผลักสาขาในท้องถิ่นไปยังสาขาระยะไกล อันนี้เกี่ยวกับการเริ่มต้น repo และผลักดันมันขึ้นมา พวกเขาสร้างข้อผิดพลาดเดียวกัน แต่ REASONS ที่พวกเขาสร้างข้อผิดพลาดนั้นและการแก้ไขแตกต่างกันโดยสิ้นเชิง นอกจากนี้คุณควรยอมรับคำตอบด้วย อาจเป็นคนแรกที่เห็นว่ามันตอบคำถามและช่วยกว่า 350 คน
tandrewnichols

คุณตั้งค่าคำสั่ง git config เพื่อติดตั้งและกำหนดค่า git ทั่วโลกบนเครื่องของคุณหรือไม่?
IgorGanapolsky

1
หวังว่าโพสต์นี้จะเป็นประโยชน์กับ somebody- samranga.blogspot.com/2015/07/ …ข้อผิดพลาดในคำถามสามารถถูกตอกได้แม้ว่าจะพยายามสร้างที่เก็บ BitBucket คอมไพล์จากโครงการที่มีอยู่ในพื้นที่แล้ว
Samitha Chathuranga

ฉันได้รับข้อผิดพลาดนี้พยายามที่จะผลักดันชื่อสาขาที่ไม่ถูกต้อง มีการแก้ไขโดยใช้git statusเพื่อให้ได้อันที่เหมาะสม
Tom Howard

5
อีกงานง่าย ๆ ที่ Git ทำได้ยาก Git devs ควรใช้ Stack Overflow เป็นผลป้อนกลับใน SDLC loop ผู้คนมากกว่า 850,000 คนควรระบุว่ามีบางอย่างผิดปกติกับเวิร์กโฟลว์ของ Git พวกเขาต้องจ้างผู้เชี่ยวชาญ UX เพราะพวกเขาไม่สามารถคอมไพล์มันเองได้อย่างชัดเจน
jww

คำตอบ:


4140

บางทีคุณแค่ต้องทำ ฉันพบสิ่งนี้เมื่อฉัน:

mkdir repo && cd repo
git remote add origin /path/to/origin.git
git add .

อ๊ะ! ไม่เคยมุ่งมั่น!

git push -u origin master
error: src refspec master does not match any.

สิ่งที่ฉันต้องทำคือ:

git commit -m "initial commit"
git push origin master

ที่ประสบความสำเร็จ!


130
อย่าเพิ่งทำตามขั้นตอนนี้สุ่มสี่สุ่มห้าดูว่า @Vi พูดถึงอะไรจากนั้นแก้ไขคำสั่ง push ของคุณเพื่อแก้ไขการอ้างอิง
Kumar

49
สาเหตุที่เป็นไปได้มากที่สุดสำหรับข้อผิดพลาดนี้คือไฟล์ทั้งหมดไม่ได้ติดตามและไม่ได้เพิ่ม git add --allในกรณีที่คุณต้องการเพิ่มไฟล์ทั้งหมดหรือคุณสามารถเลือกเพิ่มไฟล์ได้ จากนั้น,git commit -m "Initial comment" git push origin masterมันจะทำงานได้อย่างแน่นอน
Bhanu Pratap Singh

6
แก้ไขปัญหาที่แตกต่างกันซึ่งเป็นสิ่งที่ดี แต่ไม่ได้จริงๆคำตอบกับผู้นี้คำถามที่เกิดขึ้นจริง
Michael Durrant

7
git commit -m 'initial commit'ควรจะยกมาเป็นสองเท่า ' git commit -m "initial commit"อย่างน้อยในหน้าต่าง
dance2die

5
อีกเหตุผลที่เป็นไปได้: คุณไม่มีสาขาที่เรียกว่าปรมาจารย์
CarlosAS

842
  1. ลองgit show-refดูว่าคุณมีอะไรบ้าง มีrefs/heads/masterอะไรบ้าง

  2. คุณสามารถลองgit push origin HEAD:masterเป็นวิธีแก้ปัญหาอ้างอิงในพื้นที่เพิ่มเติม นี่เป็นการระบุอย่างชัดเจนว่าคุณต้องการผลักดันการอ้างอิงแบบโลคัลHEADไปที่การอ้างอิงระยะไกลmaster(ดูเอกสารประกอบของgit-push refspec )


6
สาขาหลักของฉันไม่ได้อยู่ด้านบนของความมุ่งมั่น! ดังนั้นฉันจึงสร้างสาขาที่มันเป็นที่ส่วนท้ายของทุกสาขาและฉันผลักพวกเขาไปยังเซิร์ฟเวอร์:
sinoohe

10
git checkout -b testbranch; git push ต้นกำเนิด testbranch: master
sinoohe

101
git show-refแสดงให้เห็นถึงสาขาของฉัน ที่git push origin HEAD:<branch>ทำงานให้ฉัน
Glen Solsberry

5
คุณเพิ่งช่วยฉัน Vi git push origin HEAD:masterขอขอบคุณสำหรับการ แต่ทำไมบางอย่างเช่นgit push --force origin masterไม่ทำงาน?
shkschneider

4
@ gms8994 - คุณถูกต้อง หากมีคนสร้างสาขาเป็นสิ่งแรกแทนที่จะผลักดันเข้าสู่ต้นแบบunfriendlyข้อผิดพลาดเดียวกันจะปรากฏขึ้น ใช้git push origin <branch>แทนmasterในกรณีที่คุณพยายามที่จะgit checkout -b <branch>ก่อนที่จะผลักดันครั้งแรกหลังจากเริ่มต้นgit remote add origin <url>
asyncwait

225

ฉันยังมีข้อผิดพลาดที่คล้ายกันหลังจากลบไฟล์ทั้งหมดในคอมพิวเตอร์ของฉันและฉันต้องล้างไฟล์ทั้งหมดในที่เก็บ

ข้อความแสดงข้อผิดพลาดของฉันเป็นดังนี้:

error: src refspec master does not match any.
error: failed to push some refs to 'git@github ... .git'

และมันก็ถูกแก้ไขโดยการดำเนินการคำสั่งต่อไปนี้:

touch README
git add README

git add (all other files)
git commit -m 'reinitialized files'
git push origin master --force  # <- caution, --force can delete others work.

10
คำตอบอื่น ๆ ไม่ได้แก้ปัญหาที่ฉันมี (ตัวอย่างเช่นฉันได้ทำไปแล้วและยังคงมีข้อผิดพลาดนี้อยู่) แต่git push origin BRANCH --forceทำงานอยู่ ขอบคุณ!
Lemmings19

ดูคำตอบนี้ก่อนหน้านี้ ฉันสงสัยว่าคุณต้องเพิ่มไฟล์เพราะ git จะไม่ติดตามไดเรกทอรีว่าง

3
แรงผลักดันยังสามารถทำให้เพื่อนร่วมงานทำงานหนักได้อย่างสมบูรณ์ เพิ่มคำเตือนโดยมัน
Michael Durrant

3
นี่เป็นการแก้ไขปัญหาของฉัน ฉันคิดว่าคอมไพล์เพิ่มทำมัน ในขณะที่ผลักสิ่งต่าง ๆ ในตอนแรกคอมไพล์ไม่รู้จักสิ่งต่าง ๆ นั่นอาจเป็นเหตุผลว่าทำไมฉันถึงมีปัญหา คำสั่ง git add แก้ปัญหาของฉัน หลังจากนั้นฉันก็สามารถกดได้โดยไม่ต้องบังคับ ขอบคุณ Aryo
Anandaraja_Srinivasan

203
  1. การเปลี่ยนแปลงของฉันได้กระทำไปแล้ว
  2. แรงผลักยังคงทำให้ฉันมีข้อผิดพลาดเดียวกัน

ดังนั้นฉันจึงลองวิธีแก้ปัญหาของ Vi :

git push origin HEAD:<remoteBranch> 

สิ่งนี้ใช้ได้สำหรับฉัน


19
ในที่สุดฉันก็พบว่ามันเป็นเพราะฉันสะกดชื่อสาขา ฉันประสบความสำเร็จในการผลักดันสาขา A ให้กำเนิดสาขาที่ชื่อ B ด้วยgit push origin HEAD:Bแต่ฉันยังคงได้รับข้อผิดพลาดเดิมทุกครั้งที่ฉันกดgit push originสาขา A
Yi H.

1
@YiHuang ขอบคุณมากฉันตรวจสอบชื่อสาขาของฉันก่อนแล้วฉันตรวจสอบอีกครั้งเพราะความคิดเห็นของคุณ - มีปัญหาเดียวกันสะกดผิด
ทะเลสาบ

1
@ YiH.i แน่ใจว่าชื่อสาขาของฉันถูกต้อง แต่ฉันเพิ่งตรวจสอบอีกครั้งหลังจากอ่านความคิดเห็นของคุณและสิ่งที่ไม่ดี - มีปัญหาเดียวกัน
Null Pointer

125
git push -u origin master
error: src refspec master does not match any.

เพื่อที่คุณจะต้องป้อนข้อความกระทำดังต่อไปนี้แล้วกดรหัส:

git commit -m "initial commit"

git push origin master

ประสบความสำเร็จในการผลักดันให้ต้นแบบ


ฉันตรวจสอบว่ามันใช้งานได้ โปรดละเว้นตัวเลือก -u แล้วลอง
VIKAS KOHLI

ปัญหาที่นี่ดูเหมือนจะแตกต่างอย่างสิ้นเชิงจาก OP ของ ... แต่ดูเหมือนว่าหลายคนรวมถึงฉันมีปัญหานี้
ZX9

110

สำหรับฉันฉันต้องตรวจสอบให้แน่ใจว่าคีย์สาธารณะได้รับการกำหนดค่าอย่างถูกต้องบนเซิร์ฟเวอร์ (ต่อท้ายด้วย ~ / .ssh / authorized_keys) และในGitHub / Bitbucket (เพิ่มลงในคีย์ SSH ของฉันใน GitHub หรือ Bitbucket) - พวกเขาต้องตรงกัน

แล้ว:

git add --all :/

git commit -am 'message'

git push -u origin master

มันใช้ได้ผลสำหรับฉันในที่สุด


88

ฉันพบสิ่งนี้เกิดขึ้นในแหล่งเก็บข้อมูลใหม่หลังจากที่ฉัน Git เพิ่มเฉพาะไดเรกทอรี

ทันทีที่ฉันเพิ่มไฟล์ (เช่น README) Git push ก็ใช้งานได้ดี


6
อาจเป็นไปได้เพราะคอมไพล์ไม่ได้ติดตามไดเรกทอรีเพียงไฟล์เท่านั้น ดังนั้นหากไดเรกทอรีว่างเปล่าคอมไพล์จะไม่เพิ่มจริง ๆ

1
สหกรณ์เพิ่มไฟล์ (xx.php) ดังนั้นนี้ไม่ได้เป็นปัญหาในกรณีนี้แม้ในกรณีอื่น ๆ นี้อาจจะมีปัญหาและการเพิ่มไฟล์วิธีการแก้ปัญหาของว่าปัญหาที่เกิดขึ้น
Michael Durrant

1
วิธีง่ายๆเช่นนี้สำหรับปัญหาที่น่าหงุดหงิด ฉันกำลังทดสอบการสร้างและการทำซ้ำของ repos และสร้างไดเรกทอรีว่างไม่ใช่ไฟล์
James Wierzba

1
8 ปีต่อมาสิ่งนี้ทำให้ฉันปวดหัว!
rvictordelta

ในกรณีของฉัน 1 -> git init 2 ---> git เพิ่มต้นกำเนิด .... ฯลฯ 3 ---> git git push -u master master ===> จากนั้นฉันก็พบข้อผิดพลาดข้างต้น ===> จากนั้นฉันดำเนินการคำสั่ง 2 คำสั่งมันหายไป ---> git add * ---> git commit -m "บางข้อความ" ---> git git push -u master master ===> ทำงานได้ดีสำหรับฉันในกรณีของฉัน
Rao

67

ไม่มีหรือข้ามgit add .หรือgit commitอาจทำให้เกิดข้อผิดพลาดนี้:

git push -u origin master
Username for 'https://github.com': yourusername
Password for 'https://yourusername@github.com': 
error: src refspec master does not match any.
error: failed to push some refs to 'https://github.com/yourusername/foobar.git'

หากต้องการแก้ไขให้เริ่มต้นใหม่และทำตามลำดับที่ถูกต้อง:

git init
git add .
git commit -m 'message'
git *create remote
git push -u origin master

ถูกต้องแล้วปลายธุรกิจจะเจาะจงมากขึ้นgit remote add __REMOTE_NAME__ __URL_OR_SSH__และเหนือชื่อรีโมตคือ "ต้นทาง"
aug2uag

1
พวกเขาเพิ่มและมุ่งมั่นในคำถามเพื่อไม่ให้เกิดปัญหาแม้ว่าจะช่วยคนอื่นได้ก็ตาม
Michael Durrant

คำตอบนี้ใช้ได้ผลเนื่องจาก-uตัวเลือกที่ใช้ที่นี่
Michael Durrant

63

หากต้องการแก้ไขให้เริ่มต้นใหม่และทำตามลำดับรหัสที่ถูกต้อง:

git init
git add .
git commit -m 'message'
git push -u origin master

55

ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มก่อนแล้วจึงส่ง / ยืนยัน:

ชอบ:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master

43

สิ่งนี้เกิดขึ้นเมื่อคุณอยู่ในสาขาที่เฉพาะเจาะจงและพยายามที่จะผลักดันสาขาอื่นที่ยังไม่มีอยู่เช่น:

$ git branch
* version-x  # you are in this branch
  version-y

$ git push -u origin master
error: src refspec master does not match any.
error: failed to push some refs to 'origin_address'

3
ฮ่า ๆ. ฉันพยายามที่จะผลักดันให้ต้นแบบที่มา แต่สาขาที่ไม่มีอยู่ มันถูกเรียกว่ากำเนิดมั่นคง
penner

1
-uอาจจะช่วยที่นี่
Michael Durrant

1
ในกรณีข้างต้นปัญหาคือแน่นอนว่าไม่มีสาขาในพื้นที่masterดังนั้นคุณจึงไม่สามารถผลักดันได้ คุณต้องการที่จะผลักดันสาขาที่มีอยู่ - หรือสร้างสาขาหลักแล้วกดมันเช่นนี้:git checkout -b master; git push -u origin master;
tanius

4
ฉันเพิ่งได้รับสิ่งนี้เมื่อฉันสะกดชื่อสาขา
เซบาสเตียนÄrleryd

2
สาขาในประเทศของฉันถูกสะกดคำว่า "s ชั่วโมง eduler" git push origin schedulerและฉันกำลังทำอะไรอยู่ ฮา! จดหมายฉบับหนึ่งจะฆ่าคุณในการเขียนโปรแกรม lol
protoEvangelion

43

ฉันประสบปัญหาเดียวกันและฉันใช้--allow-empty:

$ git commit -m "initial commit" --allow-empty
...
$ git push
...

เสริม

หนึ่งในเหตุผลหลักของปัญหานี้คือเซิร์ฟเวอร์ Git บางตัวเช่น BitBucket ไม่มีการmasterเตรียมใช้งานสาขาของพวกเขาเมื่อโคลนพื้นที่เก็บข้อมูลใหม่


35

สำหรับฉันแล้วการติดตามเพื่อย้ายไฟล์ที่ไม่ได้ติดตาม:

git add --all

ต่อไปผมจะทำตามขั้นตอนที่คล้ายกัน

 git commit -m "First commit"

จากนั้น

git remote add origin git@github.....

สุดท้าย แต่ไม่ท้ายสุด:

git push -u origin master

เมื่อคุณทำเช่นนี้ความปลอดภัยของ Windows จะปรากฏขึ้นเพื่อขอชื่อผู้ใช้และรหัสผ่านของคุณ


1
คุณหมายถึง `git add - all` with two dashes
Abdallah Abdillah

29

ในกรณีของฉันฉันลืมที่จะรวม.gitignoreไฟล์ นี่คือขั้นตอนทั้งหมดที่จำเป็น:

  1. สร้างที่เก็บ Git ว่างบนรีโมต
  2. ในท้องถิ่นสร้างไฟล์. gitignore สำหรับโครงการของคุณ GitHub ให้รายการตัวอย่างที่นี่
  3. เปิดตัวเทอร์มินัลและในโครงการของคุณให้ทำตามคำสั่งต่อไปนี้:

    git remote add origin YOUR/ORIGIN.git
    
    git add .
    
    git commit -m "initial commit or whatever message for first commit"
    
    git push -u origin master
    

นี่เป็นข้อผิดพลาดในคำถามที่เกี่ยวข้องกับ. gitignore อย่างไร! ถ้ามันเกี่ยวข้อง (ซึ่งฉันสงสัยอย่างมาก) คุณควรอธิบายในคำตอบของคุณ ขอบคุณ
pedram bashiri

26

เพียงเพิ่มความมุ่งมั่นเริ่มต้น ทำตามขั้นตอนเหล่านี้:

  • git add .

  • git commit -m "initial commit"

  • git push origin master

สิ่งนี้ใช้ได้สำหรับฉัน


24

ปัญหาของฉันคือสาขายังไม่ได้ถูกสร้างขึ้นในเครื่อง

รวดเร็ว

git checkout -b "master"

สร้างสาขาหลัก ณ จุดนี้อย่างรวดเร็ว

git push -u origin master

ผลักดันงานขึ้นไปยังที่เก็บ Git



19

นี่หมายความว่าคุณลืมที่จะทำคอมมิชชันเริ่มต้นลอง

git add .
git commit -m 'initial commit'
git push origin master

โปรดทำเขียน GIT commit -m "เริ่มต้นกระทำ"
Yash Agrawal

19
  1. ครั้งแรก git add .
  2. ประการที่สอง git commit -m "message"
  3. ประการที่สาม git push origin branch

โปรดตรวจสอบความผิดพลาดในการสะกดเพราะอาจทำให้เกิดข้อผิดพลาดนั้นได้


19

ฉันทำตามคำแนะนำของ GitHub ดังต่อไปนี้ แต่ฉันยังคงพบข้อผิดพลาดเดียวกันตามที่ OP กล่าวถึง:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master

สำหรับฉันและฉันหวังว่าสิ่งนี้จะช่วยได้บ้างฉันกำลังผลักไฟล์ขนาดใหญ่(1.58 GB on disk)บน MacOS ของฉัน ในขณะที่คัดลอกวางบรรทัดของรหัสที่แนะนำด้านบนฉันไม่ได้รอให้ตัวประมวลผลของฉันเสร็จสิ้นadd .กระบวนการจริงๆ ดังนั้นเมื่อฉันพิมพ์git commit -m "message"นั้นโดยทั่วไปไม่ได้อ้างอิงไฟล์ใด ๆ และยังไม่เสร็จสมบูรณ์สิ่งที่จะต้องทำเพื่อให้ประสบความสำเร็จในการกระทำรหัสของฉันไป GitHub

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

ดังนั้นฉันจึงลดขั้นตอน ฉันพิมพ์git add .และรอให้ไฟล์เสร็จสิ้นการเพิ่ม จากนั้นฉันก็ทำตามขั้นตอนต่อไป


18

ฉันมีปัญหาเดียวกันเมื่อฉันพลาดที่จะเรียกใช้:

git add .

(คุณต้องมีไฟล์อย่างน้อยหนึ่งไฟล์หรือคุณจะได้รับข้อผิดพลาดอีกครั้ง)


18

มันเกิดขึ้นถ้าคุณลืมที่จะกระทำก่อนที่จะผลักดันเป็นครั้งแรก เพิ่งรัน:

git commit -m "first commit"

17

เพื่อตรวจสอบสถานะปัจจุบัน git statusเพื่อตรวจสอบสถานะปัจจุบัน

และทำตามขั้นตอนเหล่านี้เช่นกัน:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master

16

สิ่งนี้จะเกิดขึ้นเมื่อคุณเพิ่มไฟล์ของคุณลืมที่จะกระทำและผลักดัน ดังนั้นคอมมิทไฟล์แล้วพุช


14

ผมมีปัญหาเดียวกัน. ฉันทำตามขั้นตอนต่อไปนี้:

1. git commit -m 'message'
2. git config --global user.email "your mail"
3. git config --global user.name "name"
4. git commit -m 'message'
5. git push -u origin master

14

หากคุณได้รับข้อผิดพลาดนี้ขณะทำงานในโหมด HEAD เดี่ยวคุณสามารถทำสิ่งนี้ได้:

git push origin HEAD:remote-branch-name

ดูเพิ่มเติมที่: การกด Git จากหัวเดี่ยว

หากคุณอยู่ในสาขาท้องถิ่นที่แตกต่างจากสาขาระยะไกลคุณสามารถทำได้:

git push origin local-branch-name:remote-branch-name

13

ในสถานการณ์ที่คุณตรวจสอบรหัสจากที่เก็บภายนอก (GitHub) และต้องการนำเข้าในระบบส่วนบุคคล / ภายในคำสั่งนี้จะส่องแสง:

git push --all origin

สิ่งนี้จะผลักสาขาท้องถิ่นทั้งหมดไปยังรีโมตโดยไม่ตรวจสอบการอ้างอิงและไม่มีการยืนยันในข้อตกลง


12

สิ่งนี้จะเกิดขึ้นหากคุณมีการพิมพ์ผิดในชื่อสาขาที่คุณพยายามผลักดัน


2
ฉันสงสัยว่าพวกเราหลายคนที่มาที่นี่ผ่านการค้นหาเว็บจริง ๆ แล้วพิมพ์ชื่อผิด!
ปราชญ์

12
git add .

คือทั้งหมดที่คุณต้องการ รหัสนั้นจะติดตามไฟล์ที่ไม่ได้ติดตามทั้งหมดในไดเรกทอรีของคุณ


10

ในกรณีที่คุณประสบปัญหานี้แม้หลังจากลงมือปฏิบัติgit initและผลักดันการกระทำครั้งแรก จากนั้นคุณสามารถลองดังต่อไปนี้

git checkout -b "new branch name"
git push origin "new branch name"

รหัสของคุณจะถูกผลักเป็นสาขาใหม่

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