Git에서 커밋을 푸시 할 때 메시지 'src refspec master가 일치하지 않습니다'


2688

다음을 사용하여 리포지토리를 복제합니다.

git clone ssh://xxxxx/xx.git 

나는 일부 파일 등을 변경 한 후에 그러나 addcommit그들, 나는 서버로 밀어 원하는 :

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 중복되지 않습니다. 이는 로컬 브랜치를 원격 브랜치로 푸시하는 것과 관련된 매우 구체적인 문제입니다. 이것은 repo를 초기화하고 밀어 올리는 것에 관한 것입니다. 동일한 오류가 발생하지만 해당 오류가 발생하는 이유와 수정 사항이 완전히 다릅니다. 또한, sinoohe, 당신은 대답을 받아 들여야합니다. 아마도 첫 번째 질문에 대한 답으로 350 명 이상이 도움을 주었을 것입니다.
tandrewnichols

머신에 전역으로 git을 설치하고 구성하기 위해 git config 명령을 설정 했습니까?
IgorGanapolsky 1

1
이 게시물 somebody-하는 것이 유용 할 것입니다 희망 samranga.blogspot.com/2015/07/...에게 이미 로컬 기존 프로젝트에서 자식의 bitbucket 저장소를 만들려고해도 튀어 될 수있는 문제의 오류
SAMITHA Chathuranga

잘못된 지점 이름을 푸시하려고하는 동안이 오류가 발생했습니다. git status적절한 것을 얻기 위해 사용하여 해결 되었습니다.
Tom Howard

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가 언급 한 내용을 확인한 다음 푸시 명령을 수정하여 심판을 수정하십시오.
Kumar

49
이 오류의 가장 가능성이 높은 이유는 모든 파일이 추적되지 않고 추가되지 않았기 때문입니다. git add --all모든 파일을 추가하려는 경우 또는 선택적으로 파일을 추가 할 수 있습니다. 그런 다음 git commit -m "Initial comment", git push origin master. 이것은 확실히 작동합니다.
Bhanu Pratap Singh

6
실제 질문에 대한 답변은 아니지만 다른 문제를 해결 합니다.
마이클 Durrant

7
git commit -m 'initial commit'큰 따옴표로 묶어야합니다. ' git commit -m "initial commit", 적어도 창문에서.
dance2die

5
또 다른 가능한 이유 : 실제로 master
CarlosAS

842
  1. git show-ref당신이 어떤 심판을하는지 보십시오 . 있습니까 refs/heads/master?

  2. git push origin HEAD:master더 로컬 참조 독립적 인 솔루션으로 시도 할 수 있습니다 . 이것은 로컬 참조 HEAD를 원격 참조 로 푸시한다고 명시 적으로 나타냅니다 master( git-push refspec 문서 참조).


6
내 마스터 브랜치는 커밋 위에 없었습니다! 그래서 나는 모든 지점의 끝에있는 지점을 만들고 서버로 푸시했습니다.
sinoohe

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

101
git show-ref내 지점을 보여 주었다; git push origin HEAD:<branch>나를 위해 일했습니다.
Glen Solsberry

5
방금 저를 구 했어요 감사합니다 git push origin HEAD:master. 그러나 왜 같은 git push --force origin master것이 작동하지 않습니까?
shkschneider

4
@ gms8994-맞습니다. 누군가가 마스터로 밀어 넣는 대신 첫 번째로 지점을 만들면 동일한 unfriendly오류가 나타납니다. 사용 git push origin <branch>대신에 master당신이 시도 할 경우에 git checkout -b <branch>초기 이후에 어떤 FIRST 푸시 전에git remote add origin <url>
asyncwait

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
푸시 포스는 또한 동료의 노력을 완전히 날려 버릴 수 있습니다. 그것에 의해 경고가 추가되었습니다.
마이클 Durrant

3
이것은 내 문제를 해결했습니다. git add가 그렇게했다고 생각합니다. 처음에는 물건을 밀어 넣는 것이 물건을 인식하지 못하기 때문에 문제가있는 것일 수 있습니다. git add 명령으로 문제가 해결되었습니다. 또한 그 후에 나는 --force없이 밀어 넣을 수있었습니다. 감사 Aryo
Anandaraja_Srinivasan

203
  1. 내 변경 사항은 이미 커밋되었습니다
  2. 강제 푸시는 여전히 같은 오류를 주었다.

그래서 Vi의 솔루션을 시도했습니다 .

git push origin HEAD:<remoteBranch> 

이것은 나를 위해 일했습니다.


19
마지막으로 지점 이름을 잘못 입력했기 때문이라는 것을 알았습니다. 나는 지점 A로 시작하여 지점 A를 원점으로 성공적으로 푸시 git push origin HEAD:B했지만, git push origin지점 A로 푸시 할 때마다 여전히 같은 오류가 발생합니다 .
Yi H.

1
@YiHuang, 고마워, 전에 내 지사 이름을 확인한 다음 의견 때문에 다시 확인했습니다. 같은 문제가 있었지만 잘못 작성했습니다.
lakesare

1
@ YiH.i는 내 지점 이름이 정확하다는 것을 확신했지만 의견을 읽은 후 다시 확인했습니다.
널 포인터

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

이를 위해 다음과 같이 커밋 메시지를 입력 한 다음 코드를 푸시해야합니다.

git commit -m "initial commit"

git push origin master

마스터로 성공적으로 밀었습니다.


작동하는지 확인했습니다. -u 옵션을 무시하고 시도하십시오
비 카스 콜리

여기서 문제는 OP와 완전히 다른 것 같습니다 ...하지만 저를 포함한 많은 사람들 이이 문제를 가지고있는 것 같습니다.
ZX9

110

나를 위해 공개 키 가 서버 (~ / .ssh / authorized_keys에 추가됨 )와 GitHub / Bitbucket (GitHub 또는 Bitbucket의 SSH 키에 추가됨 )에 올바르게 구성되어 있는지 확인 해야했습니다.

그때:

git add --all :/

git commit -am 'message'

git push -u origin master

결국 나를 위해 일했습니다.


88

Git이 디렉토리 만 추가 한 후에 새로운 저장소에서 이런 일이 일어났다는 것을 알았습니다.

파일 (예 : README)을 추가하자마자 Git 푸시가 훌륭하게 작동했습니다.


6
이것은 아마도 git이 실제로 디렉토리를 추적하지 않고 파일 만 추적하기 때문에 작동합니다. 따라서 디렉토리가 비어 있으면 git은 실제로 추가하지 않습니다.

1
다른 경우에는이 문제와 파일의 용액을 첨가 할 경우에도이이 경우에는 문제가 없었다 있도록 OP는 파일 (xx.php)을 첨가 하는 문제.
마이클 Durrant

1
실망스러운 문제에 대한 간단한 해결책. repos의 작성 및 복제를 테스트하고 파일이 아닌 빈 디렉토리를 작성했습니다.
James Wierzba

1
8 년 후 이로 인해 두통이 줄어 들었습니다!
rvictordelta

내 경우에는 1-> git init 2 ---> git add origin .... etc 3 ---> git git push -u origin master ===> 그런데 위의 오류가 발생했습니다. ===> 그런 다음 두 명령을 실행하면 사라집니다. ---> git add * ---> git commit -m "일부 메시지"---> git git push -u origin master ===> 내 경우에는 잘 작동했습니다.
Rao

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__이며, 원격 이름 위에 "origin"이 있습니다
aug2uag

1
그들은 다른 사람들에게 도움이 되더라도 문제가되지 않도록 그들의 질문에 추가하고 헌신했습니다.
마이클 Durrant

그러나이 답변은 -u여기에 사용 된 옵션으로 인해 효과가있었습니다.
마이클 Durrant

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
LOL. 오리진 마스터로 푸시하려고했지만 해당 지점이 존재하지 않았습니다. 원산지 안정이라고 불렀습니다.
penner

1
-u도움 이 될 수 있습니다.
마이클 Durrant

1
위의 경우 문제는 물론 로컬 브랜치 master가 없기 때문에 푸시 할 수 없다는 것입니다. 기존 분기를 푸시하거나 마스터 분기를 생성 한 후 다음과 같이 푸시합니다.git checkout -b master; git push -u origin master;
tanius

4
지점 이름을 잘못 입력했을 때 방금 이것을 얻었습니다.
Sebastian Ärleryd

2
내 지역 지점은 " h eduler" 로 철자가 되었고 나는하고 git push origin scheduler있었습니다. 하아! 하나의 편지가 프로그래밍에서 당신을 죽일 것이다. lol
protoEvangelion

43

나는 같은 문제에 직면하여 --allow-empty다음을 사용했다 .

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

보충

이 문제의 주된 이유 중 하나는 BitBucket과 같은 일부 Git 서버 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을 두 개의 대시로 표시 했습니까
Abdallah Abdillah

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
    

gitgitore와 관련된 문제의 오류는 무엇입니까?! 그것이 관련이 있다면 (내가 의심하는) 대답으로 설명해야합니다. 감사합니다
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 "initial commit"을 작성해주세요
Yash Agrawal

19
  1. 먼저, git add .
  2. 둘째, git commit -m "message"
  3. 제삼, git push origin branch

철자가 틀리면 오류가 발생할 수도 있으므로 확인하십시오.


19

나는 또한 다음과 같이 GitHub의 지시를 따랐지만 여전히 OP에서 언급 한 것과 같은 오류에 직면했습니다.

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

나에게 이것이 도움이되기를 바랍니다 .MacOS에서 큰 파일 (1.58 GB on disk)을 밀고있었습니다 . 위의 제안 된 코드 줄을 복사하여 복사하는 동안 프로세서가 실제로 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 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"

귀하의 코드는 새로운 지점으로 푸시됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.