Повідомлення "src refspec master не відповідає жодному" під час натискання комітетів у Git


2688

Я клоную своє сховище:

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 Це не дублікат. Це дуже специфічне питання щодо переміщення локальної гілки до віддаленої гілки. Це стосується ініціалізації репо і підштовхування його. Вони створюють ту саму помилку, але ПРИЧИНИ, які вони створюють, і помилки є абсолютно різними. Також, sinoohe, ви повинні прийняти відповідь. Напевно, перший, бачачи, що він відповідає на питання і допомог понад 350 людям.
tandrewnichols

Чи встановили ви свої команди git config для встановлення та налаштування git глобально на вашій машині?
ІгорГанапольський

1
Сподіваюсь, ця публікація буде корисною для когось- samranga.blogspot.com/2015/07/… . Помилка у питанні може з’явитись навіть при спробі створити сховище git BitBucket з уже наявного проекту
Саміти Чатхуранги

Я отримав цю помилку, намагаючись натиснути неправильну назву гілки. Вирішено за допомогою, git statusщоб отримати відповідний.
Том Говард

5
Ще одне просте завдання, ускладнене Git. Розробники Git повинні використовувати переповнення стека як зворотній зв'язок у своєму циклі SDLC. 850 000+ людей повинні вказувати на те, що в процесі роботи Git серйозно не так. Їм потрібно найняти експерта з UX, оскільки вони явно не можуть це зрозуміти самостійно.
jww

Відповіді:


4139

Можливо, вам просто потрібно взяти на себе зобов’язання. Я наткнувся на це, коли зробив:

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 команду, щоб виправити ref.
Кумар

49
Найбільш вірогідною причиною цієї помилки є те, що всі файли не відслідковуються та не додаються. git add --allу випадку, якщо ви хочете додати всі файли, або ви можете вибірково додати файли. Тоді git commit -m "Initial comment", git push origin master. Це неодмінно спрацює.
Бхану Пратап Сінгх

6
Виправляє інше питання, що приємно, але насправді не відповідає на це фактичне запитання.
Майкл Дюрант

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як більш місцеве незалежне від довідника рішення. Це прямо говорить про те, що ви хочете перенести локальний ref HEADдо віддаленого ref master(див. Документацію на git-push refspec ).


6
моя головна галузь не була понад комітетів! тож я створив гілку, щоб вона була в кінці всіх гілок, і я натиснув їх на сервер:
sinoohe

10
git checkout -b тестова галузь; git push test testbranch: майстер
sinoohe

101
git show-refпоказав мою гілку; git push origin HEAD:<branch>працював для мене.
Глен Солсберрі

5
Ти щойно врятував мене Ві. Дякуємо Вам за 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>
спробуєте

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
натиск - сила також може повністю знеструмити колег важкої роботи. Додано попередження.
Майкл Дюррант

3
Це вирішило мою проблему. Я думаю, що git add це зробив. Хоча під час натискання на речі git не розпізнає речі, можливо, саме тому у мене виникла проблема. команда git add вирішила мою проблему. також після цього я зміг штовхнути без сили. Дякую Аріо
Anandaraja_Srinivasan

203
  1. Мої зміни вже були здійснені
  2. Силовий поштовх все-таки дав мені ту саму помилку.

Тому я спробував рішення Ві :

git push origin HEAD:<remoteBranch> 

Це працювало для мене.


19
Я нарешті з’ясував, що це було тому, що я неправильно написав назву гілки. Я успішно штовхнув гілка А до зародження з відгалуженням під назвою B з git push origin HEAD:B, але я до сих пір отримав ту ж помилку кожен раз , коли я натискаю з git push originна гілки А.
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

Проблема тут, здається, зовсім інша, ніж у ОП ... але, здається, у багатьох, зокрема в мене, було це питання.
ZX9

110

Для мене я повинен був переконатися, що відкритий ключ правильно налаштований на сервері (додається в ~ / .ssh / санкціонованих_кейсах) та в GitHub / Bitbucket (доданий до моїх SSH-ключів на GitHub або Bitbucket) - вони повинні відповідати.

Тоді:

git add --all :/

git commit -am 'message'

git push -u origin master

Це працювало для мене врешті-решт.


88

Я виявив, що це сталося в абсолютно новому сховищі після того, як я Git додав лише каталог.

Як тільки я додав файл (наприклад, README), Git push спрацював чудово.


6
Це, мабуть, працює, тому що git насправді не відстежує каталоги, а лише файли. Отже, якщо каталог порожній, git насправді не додасть його.

1
ОП додав файл (xx.php), тому це не було проблемою в цьому випадку, навіть якщо в інших випадках це може бути проблемою, і додавши файл вирішення цієї проблеми.
Майкл Дюрант

1
Таке просте рішення набридливої ​​проблеми. Я тестував створення та клонування репостів і створював порожні каталоги, а не файли.
Джеймс Wierzba

1
Через 8 років це врятувало мені головний біль!
rvictordelta

У моєму випадку 1 -> git init 2 ---> git add origin .... і т. Д. 3 ---> git git push -u origin master ===> Тоді я отримав вищевказану помилку. ===> Потім я виконав наступні 2 команди, це зникне. ---> git add * ---> git commit -m "Some message" ---> git git push -u origin master ===> Для мене добре працював, у моєму випадку.
Рао

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
Вони додали і вирішили у своєму питанні, щоб це не було питанням, хоча це допомагає іншим людям.
Майкл Дюррант

Однак ця відповідь спрацювала через -uможливість, який тут було використано.
Майкл Дюрант

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
ЛОЛ. Я намагався підштовхнути майстра до походження, але цієї гілки не існувало. Його називали походженням стабільним.
пеннер

1
-u, Можливо, допомогли тут.
Майкл Дюрант

1
У наведеному вище випадку, звичайно, проблема полягає в тому, що немає локальної гілки master, тому ви не можете її натиснути. Ви або хочете натиснути існуючу гілку - або створити головну гілку, а потім натиснути її так:git checkout -b master; git push -u origin master;
16:00

4
Я щойно це отримав, коли неправильно написав назву гілки.
Себастьян Ърлерід

2
У моєму місцевому відділенні було написано " h h 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` з двома тиретами
Абдалла Абділла

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.


22

Ви, мабуть, забули команду "git add". після команди "git init".


Плюс git commitзвичайно ...
Білл

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, як показано нижче, але я все-таки зіткнувся з цією ж помилкою, яку згадував ОП:

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"

Ваш код буде висунутий як нова гілка.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.