본문 바로가기

Git

error: src refspec origin does not match any

가능성이 있는 원인 2가지

1. 새로 폴더를 만들어 git init 한 뒤 commit을 한 번도 하지 않았을 때

2. upstream 설정이 안 되었을 때

3. 2를 해결하고자 git이 준 코드를 쳤는데 오타를 냈을 때

 

내 경우는 2와 3이었다.

어제 한 일

1. Github에는 이미 쓰고 있던 repo가 있음

2. 로컬에 $ mkdir <새 폴더명>을 하고 새 파일도 만들어 놓음

3. $ git clone을 하지 않고 기존 repo와 연결하기 위해 이 폴더에서 아래를 실행함

$ git init

$ git remote add origin <github repo url>

4. (여긴 기억이 정확하지 않음) 일단 지금 있는 걸 add, commit 해주고 $ git pull로 기존 repo를 당겨옴

5. $ git push를 하고 보니 로컬 브랜치는 master, 기존 repo의 default는 main이라 PR 생성함

6. PR을 github에서 merge하고 브랜치 이름을 main으로 통일하고 싶어서 로컬에 main 생성, master 삭제

오늘 한 일

1. 파일 두개의 위치를 옮기고 새 파일도 만듦

2. 관성으로 add, commit 함

$ git add .
$ git commit -m "message"
$ git push

 

로컬에 있는 폴더를 기존에 존재하는 github repo와 연결할 때 $ git branch -M main을 해줬던 거 같은데 어제 이걸 실행한 기억이 없어서 이것도 해주고 git에서 쓰라는 것도 썼다.

$ git branch -M main

$ git push --set-upstream origin main

그랬더니 난 에러..는 나중에 돌아보니까 여기서 오타를 냈다. --set-upstream인데 중간에 - 를 빼먹었다.

구글링해봤더니 $ git init을 한 뒤 commit을 한 번도 하지 않아서 난 문제라고 한다.

근데 난 했었는데? $ git log를 보니까 별 이상 없고 아까 commit한 것도 HEAD로 있었다.

$ git status를 보니 위치를 바꾼 파일이 not staged로 있길래 rm 해주고 다시 commit, push했다.

그래도 같은 에러가 났다.

같은 에러

해결

다시 구글링해서 얻은 해결책. 이렇게 하니까 push 되었다.

$ git push -u origin main

-u 옵션은 --set-upstream과 같은 효과다. set upstream for git pull/status. 그러니까 내가 중간에 - 탈자를 내지 않았다면 성공했을 거라는 뜻...