Повідомлення "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.