Pesan 'src refspec master tidak cocok dengan apa pun' saat mendorong komit di Git


2691

Saya mengkloning repositori saya dengan:

git clone ssh://xxxxx/xx.git 

Tetapi setelah saya mengubah beberapa file dan adddan commitmereka, saya ingin mendorong mereka ke server:

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

Tetapi kesalahan yang saya dapatkan kembali adalah:

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

26
@ Marsco Itu bukan duplikat. Yang itu adalah masalah yang sangat spesifik tentang mendorong cabang lokal ke cabang terpencil. Yang ini adalah tentang menginisialisasi repo dan mendorongnya. Mereka menghasilkan kesalahan yang sama, tetapi ALASAN mereka menghasilkan kesalahan itu dan perbaikannya sama sekali berbeda. Juga, sinoohe, Anda harus menerima jawaban. Mungkin yang pertama, karena menjawab pertanyaan dan telah membantu lebih dari 350 orang.
tandrewnichols

Apakah Anda mengatur perintah konfigurasi git Anda untuk menginstal dan mengkonfigurasi git secara global pada mesin Anda?
IgorGanapolsky

1
Semoga posting ini bermanfaat bagi seseorang- samranga.blogspot.com/2015/07/... Kesalahan dalam pertanyaan dapat muncul bahkan ketika mencoba membuat repositori BitBucket git dari proyek yang sudah ada secara lokal
Samitha Chathuranga

Saya menerima kesalahan ini mencoba untuk mendorong nama cabang yang salah. Diselesaikan menggunakan git statusuntuk mendapatkan yang tepat.
Tom Howard

5
Namun tugas sederhana lain yang dipersulit oleh Git. Git devs harus menggunakan Stack Overflow sebagai umpan balik dalam loop SDLC mereka. 850.000+ orang harus menunjukkan ada sesuatu yang salah dengan alur kerja Git. Mereka perlu menyewa seorang ahli UX karena mereka jelas tidak bisa melakukan git sendiri.
jww

Jawaban:


4140

Mungkin Anda hanya perlu berkomitmen. Saya mengalami ini ketika saya melakukannya:

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

Ups! Tidak pernah berkomitmen!

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

Yang harus saya lakukan adalah:

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

Keberhasilan!


130
Jangan hanya mengikuti langkah ini secara membabi buta, lihat apa yang telah disebutkan @Vi, dan kemudian modifikasi perintah push Anda untuk mengoreksi ref.
Kumar

49
Alasan paling mungkin untuk kesalahan ini adalah bahwa semua file tidak terlacak dan belum ditambahkan. git add --alljika Anda ingin menambahkan semua file Atau Anda dapat menambahkan file secara selektif. Kemudian git commit -m "Initial comment", git push origin master. Ini pasti akan berhasil.
Bhanu Pratap Singh

6
Memperbaiki masalah yang berbeda yang baik tetapi tidak benar-benar jawaban untuk pertanyaan aktual ini .
Michael Durrant

7
git commit -m 'initial commit'harus dikutip ganda. ' git commit -m "initial commit", setidaknya di windows.
dance2die

5
Alasan lain yang mungkin: Anda tidak benar-benar memiliki cabang yang disebut master
CarlosAS

843
  1. Cobalah git show-refuntuk melihat referensi apa yang Anda miliki. Apakah ada refs/heads/master?

  2. Anda dapat mencoba git push origin HEAD:mastersebagai solusi yang lebih independen-referensi-lokal. Ini secara eksplisit menyatakan bahwa Anda ingin mendorong ref lokal HEADke ref jarak jauh master(lihat dokumentasi git-push refspec ).


6
cabang master saya tidak di atas komitmen! jadi saya membuat cabang bahwa itu pada akhir semua cabang dan saya mendorong mereka ke server:
sinoohe

10
git checkout -b testbranch; git push testbranch asal: master
sinoohe

101
git show-refmenunjukkan cabang saya; yang git push origin HEAD:<branch>bekerja untuk saya.
Glen Solsberry

5
Anda baru saja menyelamatkan saya Vi. Terima kasih untuk git push origin HEAD:master. Tetapi mengapa sesuatu seperti git push --force origin mastertidak berfungsi?
shkschneider

4
@ gms8994 - Anda benar. jika seseorang membuat cabang sebagai hal pertama alih-alih mendorong ke master, unfriendlykesalahan yang sama muncul. gunakan git push origin <branch>alih-alih masterjika Anda mencoba git checkout -b <branch>sebelum dorongan PERTAMA setelah inisialgit remote add origin <url>
asyncunggu

225

Saya juga memiliki kesalahan yang sama setelah menghapus semua file di komputer lokal saya, dan saya harus membersihkan semua file di repositori.

Pesan kesalahan saya kira-kira seperti ini:

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

Dan itu diselesaikan dengan menjalankan perintah berikut:

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
Jawaban lain tidak menyelesaikan masalah yang saya alami (misalnya, saya sudah melakukan dan masih memiliki kesalahan ini), tetapi melakukan git push origin BRANCH --forcepekerjaan. Terima kasih!
Lemmings19

Lihat jawaban ini sebelumnya . Saya menduga Anda perlu menambahkan file karena git tidak akan melacak direktori kosong.

3
push --force juga bisa sepenuhnya menghancurkan kerja keras rekan kerja. Peringatan ditambahkan oleh itu.
Michael Durrant

3
Ini menyelesaikan masalah saya. Saya pikir git add melakukannya. Sementara mendorong sesuatu pada awalnya git tidak mengenali hal-hal, mungkin itu sebabnya saya punya masalah. perintah git add menyelesaikan masalah saya. juga setelah itu saya bisa mendorong tanpa - force. Terima kasih Aryo
Anandaraja_Srinivasan

203
  1. Perubahan saya sudah dilakukan
  2. Push paksa masih memberi saya kesalahan yang sama.

Jadi saya mencoba solusi Vi :

git push origin HEAD:<remoteBranch> 

Ini berhasil untuk saya.


19
Saya akhirnya mengetahui bahwa itu karena saya salah mengeja nama cabang. Saya berhasil mendorong cabang A ke asal dengan cabang bernama B dengan git push origin HEAD:B, tetapi saya masih mendapatkan kesalahan yang sama setiap kali saya mendorong dengan git push originpada cabang A.
Yi H.

1
@YiHuang, ugh terima kasih, saya memeriksa nama cabang saya sebelumnya, dan kemudian saya memeriksanya lagi karena komentar Anda - memiliki masalah yang sama, salah menuliskannya.
danau

1
@ YiH.i yakin bahwa nama cabang saya benar tetapi saya hanya memeriksanya kembali setelah membaca komentar Anda dan yang buruk saya - memiliki masalah yang sama.
Null Pointer

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

Untuk itu Anda harus memasukkan pesan komit sebagai berikut dan kemudian tekan kode:

git commit -m "initial commit"

git push origin master

Berhasil didorong untuk menguasai.


Saya memeriksa itu berfungsi. Abaikan opsi -u dan kemudian coba
VIKAS KOHLI

Masalahnya di sini tampaknya sangat berbeda dari OP ... tetapi tampaknya banyak termasuk saya yang memiliki masalah ini.
ZX9

110

Bagi saya, saya harus memastikan kunci publik dikonfigurasi dengan benar di server (ditambahkan dalam ~ / .ssh / official_keys) dan di GitHub / Bitbucket (ditambahkan ke kunci SSH saya di GitHub atau Bitbucket) - mereka harus cocok.

Kemudian:

git add --all :/

git commit -am 'message'

git push -u origin master

Pada akhirnya itu berhasil bagi saya.


88

Saya menemukan ini terjadi di repositori baru setelah I Git hanya menambahkan direktori.

Segera setelah saya menambahkan file (mis. README), Git push bekerja dengan sangat baik.


6
Ini mungkin berhasil karena git tidak benar-benar melacak direktori, hanya file. Jadi jika direktori kosong, git tidak akan benar-benar menambahkannya.

1
OP menambahkan file (xx.php) jadi ini bukan masalah dalam kasus ini meskipun dalam kasus lain ini bisa menjadi masalah dan menambahkan file larutan yang masalah.
Michael Durrant

1
Solusi sederhana untuk masalah yang membuat frustrasi. Saya sedang menguji pembuatan dan kloning repo dan membuat direktori kosong bukan file.
James Wierzba

1
8 tahun kemudian ini menyelamatkan saya dari sakit kepala!
rvictordelta

Dalam kasus saya, 1 -> git init 2 ---> git tambahkan asal .... dll 3 ---> git git push -u master asal ===> Lalu saya mendapat kesalahan di atas. ===> Kemudian saya menjalankan 2 perintah berikut, itu hilang. ---> git add * ---> git commit -m "Some message" ---> git git push -u master asal ===> Bekerja dengan baik untuk saya, dalam kasus saya.
Rao

67

Hilang atau dilewati git add .atau git commitdapat menyebabkan kesalahan ini:

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'

Untuk memperbaikinya, menginisialisasi ulang dan ikuti urutan yang benar:

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

itu benar, akhir bisnis lebih khusus git remote add __REMOTE_NAME__ __URL_OR_SSH__, dan di atas nama yang jauh adalah "asal"
aug2uag

1
Mereka menambahkan dan berkomitmen dalam pertanyaan mereka sehingga itu bukan masalah meskipun ini membantu orang lain.
Michael Durrant

Namun jawaban ini berhasil karena -uopsi yang digunakan di sini.
Michael Durrant

63

Untuk memperbaikinya, inisialisasi ulang dan ikuti urutan kode yang tepat:

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

55

Pastikan Anda telah menambahkan pertama, dan kemudian komit / dorong:

Suka:

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

44

Saya menghadapi masalah yang sama, dan saya menggunakan --allow-empty:

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

Suplemen

Salah satu alasan utama masalah ini adalah bahwa beberapa server Git, seperti BitBucket, tidak memiliki mastercabang mereka diinisialisasi ketika repositori baru dikloning.


43

Ini juga terjadi ketika Anda berada di cabang tertentu dan mencoba mendorong cabang lain yang belum ada, seperti:

$ 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. Saya mencoba untuk mendorong ke master asal tetapi cabang itu tidak ada. Itu disebut asal stabil.
Penner

1
The -umungkin telah membantu di sini.
Michael Durrant

1
Dalam kasus di atas, masalahnya tentu saja karena tidak ada cabang lokal master, jadi Anda tidak bisa mendorongnya. Anda ingin mendorong cabang yang ada - atau membuat cabang master dan kemudian mendorongnya, seperti ini:git checkout -b master; git push -u origin master;
tanius

4
Saya baru saja mendapat ini ketika saya salah mengeja nama cabang.
Sebastian Ärleryd

2
Cabang lokal saya dieja "s h eduler" dan saya lakukan git push origin scheduler. HA! Satu huruf mati akan membunuh Anda dalam pemrograman. lol
protoEvangelion

35

Bagi saya, berikut ini berfungsi untuk memindahkan file yang tidak terlacak:

git add --all

Selanjutnya, saya mengikuti langkah-langkah serupa

 git commit -m "First commit"

Kemudian,

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

Terakhir tetapi tidak sedikit:

git push -u origin master

Ketika Anda melakukan ini, keamanan Windows akan muncul meminta nama pengguna dan kata sandi Anda.


1
maksud Anda `git add --all` dengan dua garis
Abdallah Abdillah

29

Dalam kasus saya, saya lupa memasukkan .gitignorefile. Inilah semua langkah yang diperlukan:

  1. Buat repositori Git kosong di remote,
  2. Secara lokal, buat file .gitignore untuk proyek Anda. GitHub memberi Anda daftar contoh di sini
  3. Luncurkan terminal, dan di proyek Anda lakukan perintah berikut:

    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
    

Bagaimana ini kesalahan terkait dengan .gitignore ?! Jika itu terkait (yang saya sangat ragu) Anda harus menjelaskannya dalam jawaban Anda. Terima kasih
pedram bashiri

26

Cukup tambahkan komit awal. Ikuti langkah ini:

  • git add .

  • git commit -m "initial commit"

  • git push origin master

Ini berhasil untuk saya.


24

Masalah saya adalah bahwa cabang 'master' belum dibuat secara lokal.

Cepat

git checkout -b "master"

menciptakan cabang master, di mana, cepat

git push -u origin master

mendorong pekerjaan ke repositori Git.


22

Anda mungkin lupa perintah "git add." setelah perintah "git init".


Plus git committentu saja ...
Bill

20

Saya juga mengikuti arahan GitHub seperti berikut di bawah ini, tetapi saya masih menghadapi kesalahan yang sama seperti yang disebutkan oleh OP:

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

Bagi saya, dan saya harap ini bisa membantu, saya mendorong file besar (1.58 GB on disk)di MacOS saya. Sambil menyalin menempelkan baris kode yang disarankan di atas, saya tidak menunggu prosesor saya untuk benar-benar menyelesaikan add .proses. Jadi Saat saya mengetikgit commit -m "message" pada dasarnya tidak mereferensikan file apa pun dan belum menyelesaikan apa pun yang perlu dilakukan untuk berhasil mengkomit kode saya ke GitHub.

Buktinya adalah ketika saya mengetik git statusbiasanya saya mendapatkan font hijau untuk file yang ditambahkan. Tapi semuanya berwarna merah. Seolah-olah itu tidak ditambahkan sama sekali.

Jadi saya redid langkah-langkahnya. saya mengetikgit add . dan menunggu file selesai ditambahkan. Kemudian saya mengikuti langkah selanjutnya.


19

Ini berarti Anda lupa melakukan komit awal, coba

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

tolong tuliskan git commit -m "commit awal"
Yash Agrawal

19
  1. Pertama, git add .
  2. Kedua, git commit -m "message"
  3. Ketiga, git push origin branch

Periksa kesalahan pengejaan karena itu juga bisa memberikan kesalahan itu.


18

Saya memiliki masalah yang sama ketika saya tidak dapat berlari:

git add .

(Anda harus memiliki setidaknya satu file, atau Anda akan mendapatkan kesalahan lagi.)


18

Itu terjadi jika Anda lupa untuk melakukan sebelum mendorong untuk pertama kalinya. Lari saja:

git commit -m "first commit"

17

Untuk memeriksa status saat ini git status,.

Dan ikuti langkah-langkah ini juga:

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

16

Ini terjadi ketika Anda telah menambahkan file Anda, lupa untuk melakukan dan mendorong. Jadi komit file dan kemudian dorong.


14

Saya memiliki masalah yang sama. Saya melakukannya dengan langkah-langkah berikut:

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

Jika Anda mendapatkan kesalahan ini saat bekerja dalam mode HEAD yang terlepas, Anda dapat melakukan ini:

git push origin HEAD:remote-branch-name

Lihat juga: Melakukan dorongan Git dari kepala yang terpisah

Jika Anda berada di cabang lokal yang berbeda dari cabang jarak jauh, Anda dapat melakukan ini:

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

13

Dalam skenario di mana Anda memeriksa kode dari repositori eksternal (GitHub), dan ingin mengimpornya dalam sistem pribadi / internal, perintah ini benar-benar bersinar:

git push --all origin

Ini mendorong semua cabang lokal ke remote, tanpa memeriksa referensi dan tanpa memaksakan komitmen.


12

Ini juga akan terjadi jika Anda memiliki kesalahan ketik pada nama cabang yang Anda coba tekan.


2
Saya menduga banyak dari kita yang datang ke sini melalui pencarian web benar-benar salah ketik namanya!
bijak

12
git add .

itu yang kamu butuhkan. Kode itu melacak semua file yang tidak terlacak dalam direktori Anda.


10

Jika Anda menghadapi masalah ini bahkan setelah melakukan git initdan mendorong komit awal Anda. Anda kemudian dapat mencoba yang berikut,

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

Kode Anda akan didorong sebagai cabang baru.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.