Src refspec main does not match any что делать
Перейти к содержимому

Src refspec main does not match any что делать

  • автор:

Error: src refspec master does not match any – How to Fix in Git

Dillion Megida

Dillion Megida

Error: src refspec master does not match any – How to Fix in Git

When working with Git, you may come across an error that says «src refspace master does not match any».

Here’s what the error means and how you can solve it.

What Does src refspec master does not match any Mean in Git?

You may get this error when you try to trigger a push from a local repository to a master repository like this:

git push origin master 

This error can occur for different reasons.

The most likely reason this error will occur is that the master branch does not exist.

Perhaps you cloned a new repository and the default branch is main , so there’s no master branch when you try to push for it.

You can display the remote branches connected to a local repository using the git branch -b command like this:

git branch -b # results # origin/main # origin/feat/authentication # origin/other branches . 

With the above results, you can see that there is no master repository ( origin/master ). So when you try to push to that repository, you will get the «respec error».

This result also applies to any other branch that does not exist. Let’s say, for example, I make changes and push to a remote hello branch that does not exist:

git add . git commit -m "new changes" git push origin hello 

This command will produce the following error:

error: src refspec hello does not match any 

How to Fix the «src refspec master does not match any» Error

Now you are aware that the master branch does not exist. The solution to this error is to either create a local and remote master branch that you can push the commit to or to push the commit to an existing branch – maybe main .

You can create a remote master branch on a Git managed website (like GitHub) or you can do that directly from your terminal like this:

git checkout -b master # add commit git push origin master 

These commands will create a master branch locally. And by pushing to origin master , the master branch will also be created remotely.

But if you do not want to create a master branch, you can use the existing default branch (which may be main ) instead.

Wrapping up

So if you get the Error: src refspec master does not match any error when you try to push to master, the most viable reason is that the master branch does not exist.

Ошибка src refspec main does not match any — гитхаб не дает запушить на main?

62dc2baeeea93215697135.png

$ git push -u origin main после этой комманды выдает
error: src refspec main does not match any
error: failed to push some refs to ‘https://github.com/. ‘
при этом, если я сделаю $ git push -u origin master, то создается новая ветка и туда отправляются нужные файлы, правда как с ней взаимодействовать — непонятно, все выводится списком
при этом я пытаюсь принять пуш, но ничего не происходит

а еще если попытаться опять что-нибудь закоммитить $ git commit -m «#1»
то получается:
On branch master
nothing to commit, working tree clean
то есть локально у меня главная ветка master? а на гите main, из-за этого не может быть проблем?

  • Вопрос задан более года назад
  • 8178 просмотров

Комментировать
Решения вопроса 1

sergey-kuznetsov

Сергей Кузнецов @sergey-kuznetsov Куратор тега Git
Автоматизатор

Нет, не на main, а из main.

Команда git push -u origin main делает отправку локальной ветки main во внешний репозиторий origin , но ветки main не существует, о чем вам и сообщили в ошибке.

Вам нужно либо переименовать master в main :
git branch -M main

Либо так и написать, что вы хотите master отправить во внешний main
git push -u origin master:main

Но судя по скрину, у вас репозиторий не пустой. Вы уже создали там ветку с первоначальным коммитом. Поэтому вы не сможете просто так туда сделать push, так как ваши ветки не имеют общей истории. Это РАЗНЫЕ деревья. В таких случаях можно просо пересадить локальную ветку на вершину внешней через rebase. Либо создать ПУСТОЙ репо, как вы и сделали.

Ответ написан более года назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 1
steklovatnik @steklovatnik Автор вопроса

*** нет цензурных слов)
в моем репозитории на гите лежал файл readme.md
даже если я его пулил на локальный репозиторий, это не помогало
в итоге создал все заново без всяких доп файлов и нормально запушилось
+ добавил git branch -M main

Ответ написан более года назад

sergey-kuznetsov

Сергей Кузнецов @sergey-kuznetsov Куратор тега Git

Пулится не файл, а ветка. Этот ридми вы создали в main. Main и скачался и на мастер никак не повлиял. Всё сработало ровно так, как и должно.

error: src refspec master does not match any

Upstream с английского переводится как восходящий поток, downstream соответственно нисходящий. Или восходящий — от вас вверх, нисходящий — от вас вниз. В терминах GitHub и вашего компьютера (репозиторий изначально ваш) GitHub == upstream, ваш компьютер == downstream. Стало понятнее?

24 янв 2021 в 19:16

А вообще, конечно, надо добавить в вопрос вывод команды git remote -v . И читать docs.github.com/en/github/importing-your-projects-to-github/….

Как исправить ошибку «src refspec master does not match any»?

3deeeb53dda70bea0809cff5e4032011ba45ac7d refs/heads/main
27383695f3f76e87254687449d73250254560bbb refs/remotes/origin/HEAD
27383695f3f76e87254687449d73250254560bbb refs/remotes/origin/main
3deeeb53dda70bea0809cff5e4032011ba45ac7d refs/remotes/origin/master

И делал так

Maybe you just need to commit. I ran into this when I did:

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

Oops! Never committed!

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

All I had to do was:

git commit -m «initial commit»
git push origin master

Я пытался еще так
git push origin HEAD:master
Но хоть загрузка и произошла но файлы не загрузились в github

Но это не помогло что мне делать как исправить

  • Вопрос задан более трёх лет назад
  • 38663 просмотра

Комментировать
Решения вопроса 1

sergey-kuznetsov

Сергей Кузнецов @sergey-kuznetsov Куратор тега Git
Автоматизатор

Нет ветки master, вот и ругается. Ветка по умолчанию на GitHub теперь называется main.

Команда git branch -vv покажет какие ветки есть локально и с какими внешними ветками связаны.
* main 0e02250 [origin/main] v.01

Надо было делать git push origin main
Либо просто git push т. е. отправить текущую ветку в связанную с ней ветку на внешнем репозитории.
В нашем случае текущая ветка main (помеченная звёздочкой)
отслеживает исходную ветку main в репозитории обозначенном как origin

Что скрывается за сокращением origin покажет команда git remote -v

origin https://github.com/xxx/xxx.git (fetch) origin https://github.com/xxx/xxx.git (push)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *