Git'te taahhütleri aktarırken 'src refspec master hiçbiriyle eşleşmiyor' mesajı


2689

Depomu şu şekilde klonladım:

git clone ssh://xxxxx/xx.git 

Bazı dosya ve değiştirdikten sonra Ama addve commitonları, ben sunucusuna itmek istiyorum:

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

Ama geri aldığım hata:

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

26
@Marco Bu bir kopya değil. Bu, yerel bir dalı uzak bir şubeye itme konusunda çok özel bir konudur. Bu bir repo başlatmak ve yukarı itmekle ilgilidir. Aynı hatayı üretirler, ancak bu hatayı ürettikleri ve düzeltmeleri tamamen farklıdır. Ayrıca, sinoohe, bir cevabı kabul etmelisin. Muhtemelen birincisi, soruyu cevapladığını ve 350'den fazla kişiye yardımcı olduğunu gördü.
tandrewnichols

Git global komutlarını, makinenize global olarak yüklemek ve yapılandırmak için ayarladınız mı?
IgorGanapolsky

1
Bu gönderinin birisi için yararlı olacağını umuyoruz- samranga.blogspot.com/2015/07/… Söz konusu hata, zaten yerel olarak mevcut olan bir projeden git BitBucket deposu oluşturmaya çalışıldığında bile ortaya çıkabilir
Samitha Chathuranga

Yanlış şube adını zorlamaya çalışırken bu hatayı aldım. git statusUygun olanı almak için kullanarak çözüldü .
Tom Howard

5
Git tarafından zorlaştırılan bir başka basit görev. Git geliştiricileri, Yığın Taşmasını SDLC döngülerinde geri bildirim olarak kullanmalıdır. 850.000'den fazla insan Git'in iş akışıyla ilgili bir şeyin yanlış olduğunu belirtmelidir. Bir UX uzmanı tutmaları gerekiyor çünkü açıkça kendi başlarına gidemiyorlar.
jww

Yanıtlar:


4140

Belki sadece taahhüt etmelisin. Yaptığımda bununla karşılaştım:

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

Hata! Asla taahhüt edilmez!

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

Tek yapmam gereken:

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

Başarı!


130
Bu adımı körü körüne takip etmeyin, @Vi'nin bahsettiklerine bakın ve ref komutunu düzeltmek için push komutunuzu değiştirin.
Kumar

49
Bu hatanın en olası nedeni, tüm dosyaların izlenmemiş olması ve eklenmemiş olmasıdır. git add --alltüm dosyaları eklemek istemeniz durumunda Veya dosyaları seçici olarak ekleyebilirsiniz. Sonra git commit -m "Initial comment", git push origin master. Bu kesinlikle işe yarayacaktır.
Bhanu Pratap Singh

6
Gerçekten bir cevap değil güzel ama farklı sorununu düzeltir Bu gerçek soru.
Michael Durrant

7
git commit -m 'initial commit'çift ​​tırnak içine alınmalıdır. ' git commit -m "initial commit", en azından pencerelerde.
dance2die

5
Başka bir olası neden: aslında master
CarlosAS

843
  1. git show-refHangi referanslara sahip olduğunuzu görmeye çalışın . Var mı refs/heads/master?

  2. git push origin HEAD:masterDaha yerel referanstan bağımsız bir çözüm olarak deneyebilirsiniz . Bu, yerel ref'yiHEAD uzaktan ref'ye göndermek istediğinizi açıkça belirtir master( git-push refspec belgelerine bakın).


6
ana şubem taahhütlerin üstünde değildi! böylece tüm dalların sonunda olduğunu bir şube yarattı ve ben sunucuya onları itti:
sinoohe

10
git checkout -b testbranch; git push origin testbranch: usta
sinoohe

101
git show-refşubemi gösterdim; git push origin HEAD:<branch>benim için çalıştı.
Glen Solsberry

5
Beni yeni kurtardın Vi. İçin teşekkür ederim git push origin HEAD:master. Ama neden böyle bir şey git push --force origin masterçalışmıyor?
shkschneider

4
@ gms8994 - haklısın. birisi bir dalı master'a aktarmak yerine ilk şey olarak oluşturursa, aynı unfriendlyhata ortaya çıkar. Başlangıçtan sonra herhangi bir İLK itmeden önce girişimde bulunmak git push origin <branch>yerine kullanınmastergit checkout -b <branch>git remote add origin <url>
asyncwait

225

Yerel bilgisayarımdaki tüm dosyaları sildikten sonra da benzer bir hatayla karşılaştım ve depodaki tüm dosyaları temizlemem gerekiyor.

Hata mesajım şöyle bir şeydi:

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

Ve aşağıdaki komutlar uygulanarak çözüldü:

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
Diğer cevaplar yaşadığım sorunu çözmedi (örneğin, zaten taahhütte bulundum ve hala bu hatayı aldım), ama git push origin BRANCH --forceişe yaradı. Teşekkür ederim!
Lemmings19

Bu önceki cevaba bakınız . Git boş dizinleri izlemediğinden dosya eklemeniz gerektiğinden şüpheleniyorum.

3
push -force ayrıca iş arkadaşlarının sıkı çalışmasını tamamen patlatabilir. Uyarı eklendi.
Michael Durrant

3
Bu benim sorunumu çözdü. Bence git add bunu yaptı. İlk başta şeyleri itmek şeyleri tanımıyor olsa da, bu yüzden problemim vardı. git add komutu sorunumu çözdü. ayrıca ondan sonra da zorla itebildim. Thanks Aryo
Anandaraja_Srinivasan

203
  1. Değişikliklerim zaten yapılmıştı
  2. Force push hala bana aynı hatayı verdi.

Bu yüzden Vi'nin çözümünü denedim :

git push origin HEAD:<remoteBranch> 

Bu benim için çalıştı.


19
Sonunda bunun şube ismini yanlış yazdığım için olduğunu öğrendim. A dalını başarıyla B adında bir dalla başlayacak şekilde ittim git push origin HEAD:B, ancak her bastığımda hala aynı hatayı aldımgit push origin başlayacak
Yi H.

1
@YiHuang, ugh teşekkürler, daha önce şube adımı kontrol ettim ve sonra yorumunuz nedeniyle tekrar kontrol ettim - aynı sorunu vardı, yanlış yazdı.
lakesare

1
@ YiH.i benim şube adı doğru olduğundan emin oldu ama ben sadece yorumunuzu okuduktan sonra tekrar kontrol ve benim kötü - aynı sorunu var.
Boş İşaretçi

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

Bunun için kesinleştirme mesajını aşağıdaki gibi girmeniz ve kodu itmeniz gerekir:

git commit -m "initial commit"

git push origin master

Başarıyla ustalaştı.


Çalıştığını kontrol ettim. Lütfen -u seçeneğini dikkate almayın ve sonra deneyin
VIKAS KOHLI

Buradaki sorun OP'lerden tamamen farklı görünüyor ... ama benim de dahil olmak üzere birçok kişinin bu sorunu vardı.
ZX9

110

Benim için ortak anahtarın sunucuda (~ / .ssh / authority_keys ekinde ) ve GitHub / Bitbucket'te doğru şekilde yapılandırıldığından emin olmak zorunda kaldım (GitHub veya Bitbucket'teki SSH anahtarlarıma eklendi - eşleşmeleri gerekiyor.

Sonra:

git add --all :/

git commit -am 'message'

git push -u origin master

Sonunda benim için çalıştı.


88

Bunun Git'e sadece bir dizin ekledikten sonra yepyeni bir depoda olduğunu gördüm.

Bir dosya (ör. Bir README) ekler eklemez Git push harika çalıştı.


6
Bu muhtemelen çalışır çünkü git aslında dizinleri değil, sadece dosyaları izler. Bir dizin boşsa, git aslında onu eklemeyecektir.

1
OP bir dosya (xx.php) ekledi, bu nedenle bu durumda bu sorun değildi, ancak diğer durumlarda bu bir sorun olabilir ve bir dosyaya bu sorunun çözümü eklenebilir .
Michael Durrant

1
Sinir bozucu bir soruna böyle basit bir çözüm. Depoların oluşturulmasını ve klonlanmasını test ediyordum ve dosyalar değil, boş dizinler oluşturdum.
James Wierzba

1
8 yıl sonra bu başımı ağrıyor!
rvictordelta

Benim durumumda, 1 -> git init 2 ---> git kökeni ekle .... etc 3 ---> git git push -u origin master ===> Sonra yukarıdaki hatayı aldım. ===> Sonra aşağıdaki 2 komutu yerine getirdim, yok oldu. ---> git add * ---> git commit -m "Bazı mesajlar" ---> git git push -u origin master ===> Benim durumumda benim için iyi çalıştı.
Rao

67

Eksik veya atlama git add .veyagit commit bu hataya neden olabilir:

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'

Düzeltmek için, yeniden başlatın ve uygun sırayı izleyin:

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

bu doğru, iş sonu daha spesifik git remote add __REMOTE_NAME__ __URL_OR_SSH__ve uzak adın üstünde "kökeni"
aug2uag

1
Sorularını eklediler ve taahhüt ettiler.
Michael Durrant

Ancak bu cevap -uburada kullanılan seçenek nedeniyle işe yaradı .
Michael Durrant

63

Düzeltmek için, yeniden başlatın ve uygun kod sırasını izleyin:

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

55

Önce eklediğinizden emin olun ve ardından taahhüt edin / itin:

Sevmek:

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

43

Bu, belirli bir dalda olduğunuzda ve henüz var olmayan başka bir dalı itmeye çalıştığınızda da olur:

$ 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
LOL. Kökeni efendisine zorlamaya çalışıyordum ama o dal yoktu. Buna kökeni kararlı denirdi.
penner

1
-uBurada yardım etmiş olabilir.
Michael Durrant

1
Yukarıdaki durumda, sorun elbette yerel bir şube olmamasıdır master, bu yüzden itemezsiniz. Ya mevcut bir dalı itmek istersiniz - ya da ana dalı yaratıp ardından şu şekilde itmek istersiniz:git checkout -b master; git push -u origin master;
tanius

4
Şube adını yanlış yazdığımda bunu anladım.
Sebastian lerrleryd

2
Yerel şubem " s eduler" yazıldığından yapıyordum git push origin scheduler. HA! Bir harf kapalı programlamada sizi öldürür. lol
protoEvangelion

43

Aynı sorunla karşılaştım ve kullandım --allow-empty:

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

ek

Bu sorunun temel nedenlerinden biri, BitBucket gibi bazı Git sunucularının masteryeni bir havuz klonlandığında şubelerinin başlatılmamış olmasıdır.


35

Benim için, takip edilmeyen dosyaları taşımak için çalıştı:

git add --all

Sonra, benzer adımları izledim

 git commit -m "First commit"

Sonra,

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

Son fakat en az değil:

git push -u origin master

Bunu yaptığınızda, Windows güvenliği açılır ve kullanıcı adınızı ve şifrenizi sorar.


1
iki çizgi ile `` git add --all` demek istediniz
Abdallah Abdillah

29

Benim durumumda .gitignoredosyayı eklemeyi unuttum . Gerekli tüm adımlar şunlardır:

  1. Uzaktan kumandada boş bir Git deposu oluşturun,
  2. Yerel olarak projeniz için .gitignore dosyasını oluşturun. GitHub size örneklerin bir listesini verir
  3. Bir terminal başlatın ve projenizde aşağıdaki komutları yapın:

    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
    

Söz konusu hata .gitignore ile nasıl ilişkilidir ?! Eğer ilgiliyse (ki kesinlikle şüpheliyim) cevabınızda açıklamalısınız. Teşekkürler
pedram bashiri

26

Sadece bir başlangıç ​​taahhüdü ekleyin. Bu adımları takip et:

  • git add .

  • git commit -m "initial commit"

  • git push origin master

Bu benim için çalıştı.


24

Benim sorunum, 'ana' dalın henüz yerel olarak oluşturulmamış olmasıydı.

Hızlı

git checkout -b "master"

ana dalı yarattı, bu noktada hızlı

git push -u origin master

işi Git deposuna doğru itti.


22

Muhtemelen "git add" komutunu unuttunuz. "git init" komutundan sonra.


Artı git committabii ki ...
Bill

19

Bu sadece ilk taahhüdü yapmayı unuttuğunuz anlamına gelir, deneyin

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

git git -m "ilk taahhüt" yazınız
Yash Agrawal

19
  1. İlk, git add .
  2. İkinci, git commit -m "message"
  3. Üçüncü, git push origin branch

Lütfen yazım hatalarını kontrol edin çünkü bu da hata verebilir.


19

GitHub'ın talimatlarını aşağıdaki gibi de takip ettim, ancak yine de OP tarafından belirtilenle aynı hatayla karşılaştım:

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

Benim için ve umarım bu bazılarına yardımcı olur, MacOS'umda büyük bir dosya bastırıyordum (1.58 GB on disk). Yukarıda önerilen kod satırını kopyalayarak, işlemcimin add .işlemi bitirmesini beklemiyordum . Bu yüzden yazdığımda git commit -m "message"temelde herhangi bir dosyaya başvurmadı ve kodumu GitHub'a başarıyla tamamlamak için ne gerekiyorsa tamamlanmadı.

Bunun kanıtı, yazdığım zaman git statusgenellikle eklenen dosyalar için yeşil yazı tipleri alıyorum. Ama her şey kırmızıydı. Sanki hiç eklenmemiş gibi.

Bu yüzden adımları tekrarladım. Yazdım git add .ve dosyaların eklenmesini bekledim. Sonra sonraki adımları izledim.


18

Ben koşmak özledim aynı sorun vardı:

git add .

(En az bir dosyanız olmalıdır, yoksa hatayı tekrar alırsınız.)


18

İlk kez itmeden önce taahhüt etmeyi unutursanız olur. Sadece koş:

git commit -m "first commit"

17

Mevcut durumu kontrol etmek için, git status ,.

Ve şu adımları da takip edin:

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

16

Bu, dosyanızı eklediğinizde, işlemeyi ve itmeyi unuttuğunuzda olur. Bu yüzden dosyaları taahhüt edin ve ardından itin.


14

Ben de aynı problemi yaşadım. Aşağıdaki adımlarla yaptım:

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

Ayrılmış HEAD modunda çalışırken bu hatayı alırsanız, bunu yapabilirsiniz:

git push origin HEAD:remote-branch-name

Ayrıca bakınız: Git'in bağımsız bir kafadan itilmesi

Uzak daldan farklı bir yerel daldaysanız, bunu yapabilirsiniz:

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

13

Harici bir depodan (GitHub) kodu kontrol ettiğiniz ve kodu kişisel / dahili sisteme aktarmak istediğiniz senaryoda, bu komut gerçekten parlar:

git push --all origin

Bu, tüm yerel şubeleri referansları kontrol etmeden ve taahhütlerde ısrar etmeden uzaktan kumandaya iter.


12

Bu, itmeye çalıştığınız dal adında bir yazım hatası varsa da olur.


2
Buraya web aramasıyla gelen çoğumuzun aslında adı yanlış yazdığından şüpheleniyorum!
adaçayı

12
git add .

tüm ihtiyacın olan. Bu kod, dizininizdeki izlenmemiş tüm dosyaları izler.


10

İlk işleminizi yaptıktan git initve ittikten sonra bile bu sorunla karşı karşıya kalmanız durumunda . Daha sonra aşağıdakileri deneyebilirsiniz,

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

Kodunuz yeni bir şube olarak aktarılacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.