[git] error : src refspec main does not match any 해결방법 완벽 분해

JoyKda·2023년 1월 30일
2

Git

목록 보기
1/1
post-thumbnail

💗 에러 발생 상황

git push 시도할 때 에러 발생
git push origin main 

💗 에러 발생 원인

1. main branch가 존재하지 않거나 default로 설정되어 있지 않은 경우
2. local repository와 remote repository의 정보(자료)가 다른 상황에서 pull 없이 바로 push를 하려고 하는 경우
>> remote repository에만 존재하고 있는 내용이 삭제되는 문제 방지 위해 에러 메세지 발생
3. empty directory 상태 또는 commit을 하지 않은 상태에서 push하려고 할 경우

💗1번 문제 해결_ 순서대로 확인해보자

branch 정보 확인 (현재 연결된 branch는 *표시로 확인가능_ 아래 예시에서는 main이 아닌 master로 default 연결되어 있음)
git branch 

main branch가 없을 경우 새로 생성
git branch main(브랜치명) // 예시에서 sub라는 브랜치 생성한 것 확인가능

추가팁) branch 삭제하는 법
git branch -d main(브랜치명) // 예시에서 sub라는 브랜치 삭제된 것 확인가능

main branch가 존재하긴 하나, default로 연결되어 있지 않은 경우 switch하고 다시 확인 (아래 예시에서 main으로 변경됨)
git checkout main 
git branch

다시 add + commit하면 정상적으로 연결될 것.
git add . // 전체 파일 add할 경우
git commit -m "answer added" 
git push origin main 


💗2번 문제 해결_ 순서대로 확인해보자

remote repository의 자료를 local repository로 pull 하기
git pull origin main (원격저장소 + 브랜치명)  
추가팁) git clone과 git pull 차이?

git pull은 local에 이미 자료가 있는 상태에서 remote의 수정본을 추가 반영할 경우 사용되고, git clone은 remote의 내용을 온전히 가져와 덮어쓰기 때문에 local에 자료가 없는 상태에서 사용. 예시로는 진행중인 프로젝트에 첫 도입되었을 때 git clone 사용하는 케이스가 있음

💗3번 문제 해결

실수로 commit을 까먹었거나 empty directory를 그냥 commit하려고 한 케이스일 거라 예상.. add + commit 하고 push하면 됨.
git add . // 전체 파일 add할 경우
git commit -m "answer added" 
git push origin main 

많은 시행착오 끝에 찾아낸 오류의 원인과 해결책을 공유하니 개발덕분들께 도움이 되었으면.. 화이팅🎈

profile
swift log

1개의 댓글

comment-user-thumbnail
2024년 2월 15일

1번 문제 해결 방법으로 해결했습니다. 감사합니다!

답글 달기