
Git을 사용하여 원격 저장소에 코드를 푸시(push)할 때, 예상치 못한 오류 메시지를 만나는 경우가 있습니다. 처음 이 오류를 접하시면 당황스러울 수 있지만, 원인과 해결 방법을 정확히 알면 쉽게 처리하실 수 있습니다. 이 글에서는 해당 오류가 발생하는 이유와 해결 방법을 차근차근 안내해 드리겠습니다.
이 오류가 발생하는 이유는 무엇인가요?
아래와 같은 상황에서 이 오류가 발생하는 경우가 많습니다.
1. 로컬에 main 브랜치가 존재하지 않을 경우
- git push origin main 명령어를 실행했지만, 실제로는 로컬에 main이라는 이름의 브랜치가 존재하지 않는 경우입니다.
- 브랜치 이름이 master일 수도 있고, 다른 이름을 사용하는 경우도 있습니다.
2. 커밋이 전혀 없는 상태에서 푸시를 시도할 경우
- 브랜치는 생성했지만 아직 한 번도 커밋을 하지 않은 상태에서는 푸시할 수 없습니다.
- 푸시할 커밋이 없기 때문에 발생하는 오류입니다.
오류 해결을 위한 단계별 가이드
1. 현재 브랜치 이름 확인하기
먼저 현재 사용 중인 브랜치가 무엇인지 확인합니다.
git branch
결과예시
*master
현재 브랜치가 master로 표시된다면, git push origin main 명령어가 아닌 git push origin master로 푸시를 해야 합니다.
2. 브랜치 이름에 맞게 푸시하기
확인한 브랜치 이름을 기준으로 푸시 명령어를 작성합니다.
git push origin [브랜치 이름]
예시
git push origin master
3. 브랜치 이름을 main으로 변경하고 싶으신 경우
최근 GitHub에서는 기본 브랜치 명칭이 main으로 변경되었습니다.
기존 브랜치가 master인 경우, 아래 명령어로 main으로 이름을 변경하실 수 있습니다.
git branch -M main
git push origin main
4. 커밋이 없는 상태라면, 커밋 후 푸시하기
git add .
git commit -m "First commit"
git push origin main
5. GitHub에서 새 저장소를 만들고 푸시하는 경우
echo "# 프로젝트명" >> README.md
git init
git add .
git commit -m "First commit"
git branch -M main
git remote add origin https://github.com/사용자명/레포지토리명.git
git push -u origin main
정리
- 브랜치 이름을 정확히 확인하고, 그 이름으로 푸시합니다.
- 첫 커밋을 하지 않았다면 커밋을 먼저 진행한 후 푸시합니다.
- 브랜치가 main인지 master인지 혼동되지 않게 관리합니다.
- 에러 메시지를 잘 읽고, 로컬과 원격 저장소 상태를 점검합니다.