← 모든 글

src refspec main does not match any 해결 방법

원인: main에 첫 커밋이 없으면 push할 기록이 없습니다. 해결: No commits yet이고 올릴 파일을 확인했다면 첫 기록을 만든 뒤 보냅니다.

git add readme.md
git commit -m "add readme"
git push -u origin main

add는 파일을 선택하고 commit은 기록을 만들며 push는 원격으로 보냅니다. 커밋이나 push가 실패하면 중단하고 해당 오류를 확인하세요. 이미 커밋이 있다면 먼저 실제 브랜치명과 push할 이름을 비교하세요

화면은 실제 프로그램에서 캡처했습니다. 이미지를 누르면 새 탭에서 원래 크기로 볼 수 있습니다. 넓은 화면은 이미지 안에서 좌우로 밀어 보세요.

1. 첫 커밋이 없는 경우인지 확인하세요

git push origin main에서 src refspec main does not match any가 나면 git status와 git branch --show-current를 확인하세요. 이 예제는 main이고 No commits yet입니다. refspec은 보낼 로컬 기록과 원격 목적지를 지정하는 표현입니다. 실제 브랜치명이 다른 경우도 같은 오류가 날 수 있습니다.

main이지만 No commits yet이며 src refspec 오류가 납니다.
화면에서 찾을 항목: main이지만 No commits yet이며 src refspec 오류가 납니다.

확인할 결과main이지만 No commits yet이며 src refspec 오류가 납니다.

2. 검토한 파일을 첫 커밋으로 남기세요

readme.md 내용을 확인한 뒤 이 파일만 첫 커밋에 넣습니다. 커밋은 선택한 변경의 기록입니다. 다음은 예제에서 실행한 명령입니다.

git add readme.md
git commit -m "add readme"
git push -u origin main

add는 다음 기록에 넣을 파일을 선택하고 commit은 기록을 만듭니다. push는 원격으로 보내며 -u는 이후 사용할 추적 관계도 설정합니다. 커밋이나 push가 실패하면 다음 성공 단계로 넘기지 말고 해당 오류를 확인하세요.

첫 커밋이 만들어지고 main이 원격에 전송됩니다.
화면에서 찾을 항목: 첫 커밋이 만들어지고 main이 원격에 전송됩니다.

확인할 결과첫 커밋이 만들어지고 main이 원격에 전송됩니다.

3. 원격과 추적 대상을 확인하세요

다음 명령으로 간단한 작업 상태와 다음 push 결과를 확인하세요.

git status -sb
git push

예제에서는 main이 origin/main을 추적하고, push 결과는 Everything up-to-date입니다. 같은 기록을 이미 전송했다는 뜻입니다. 이미 커밋이 있는 파일은 첫 커밋 절차를 반복하지 말고 실제 브랜치명과 push 명령의 이름을 비교하세요. 강제 push는 없는 로컬 기록을 만드는 해결책이 아닙니다.

origin/main을 추적하고 로컬과 원격 main의 커밋이 일치합니다.
화면에서 찾을 항목: origin/main을 추적하고 로컬과 원격 main의 커밋이 일치합니다.

확인할 결과origin/main을 추적하고 로컬과 원격 main의 커밋이 일치합니다.

참고한 자료

다음에 읽기

git push non-fast-forward 오류 해결 방법 →

fatal: not a git repository 해결 방법 →

Git has no upstream branch 오류 추적 브랜치 지정하기 →