전통적으로 Git에서는 기본 브랜치 이름이 master 였지만 2020년을 전후로, 특히 Black Lives Matter 운동 이후로 많은 개발자 커뮤니티와 회사들이 master는 노예제(master-salve) 시스템을 연상시킬 수 있기 때문에 2020년부터 GitHub은 새로운 저장소의 기본 브랜치 이름을 main으로 자동 설정하게 바꿨다.
그러나 IntelliJ나 Git 초기 설정에서는 여전히 master로 생성되는 경우가 많고 나 또한 master로 브랜치가 생성되었기 때문에 git branch를 master에서 main으로 변경했던 과정을 포스팅 할려고 한다.
우선, git branch를 master에서 main으로 변경하는 방법은 아래와 같다.
🔧 Git branch를 master에서 main으로 변경하는 방법
✅ 1. 현재 브랜치 이름 확인 (이미 알고 있겠지만 확인용)
IntelliJ 하단의 Git 탭 또는 터미널에서 아래 명령어로 확인
git branch
✅ 2. 브랜치 이름 변경( master
→ main
)
git branch -m main
-m
: 브랜치 이름을 바꾸는 명령어
✅ 3. 원격 저장소에 새 브랜치 (main
) 푸시
git push -u origin main
✅ 4. GitHub에서 기본 브랜치를 main
으로 변경
1. Github에서 접속해서 해당 Repository 들어가기
2. Settings → Branches 메뉴로 이동
3. Default branch 항목에서 main으로 바꾸기
✅ 5. 예전 브랜치 ( master
) 삭제 (선택사항)
GitHub에서 master가 더 이상 필요 없다면 삭제
git push origin --delete master
위와 같은 순서대로 하다가 'git push -u origin main' 명령어를 실행하는 순간 아래와 같이 오류가 발생했다.

' error: spc refspec main does not match any '
이 메세지는 로컬에 아직 main이라는 브랜치가 없어서 push 할 수 없다는 뜻이다.
github에 main과 master 브랜치 둘 다 있는데 왜 실패한건지 알 수는 없지만 일단 에러가 떴으니 에러를 해결하고자 한다.
혹시 나와 같이 똑같은 에러가 떴다면 해결 방법은 아래 블로그에 포스팅 해놨다.
🔻error: spc refspec main does not match any 에러 해결 방법
[Git] errer: src refspec main does not match any 해결방법
늘 Eclipse만 쓰다가 IntelliJ로 Github 연결해서 첫 commit을 할려고 하는데 main에 커밋되지않고 master에서 커밋이 되어서 master->main으로 변경하다가 발생한 오류로 해결 방법을 포스팅 해보려고 한다. e
kimhyejin1030.tistory.com
하지만 여기서 에러가 쉽게 해결되었다면 이 블로그를 포스팅 하지 않았을 것이다.
위 블로그와 같이 순서대로 따라하다가 또 다른 에러를 만났다.

이 에러를 분석해보자면 아래와 같다.
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://github.com/kimhyejin1030/Java.git'
hint: Updates were rejected because the remote contains work that you do not have locally.
이건 GitHub 원격 저장소( main
)에 있는 내용과 충돌이 발생해서 push가 거부된 것이다.
쉽게 말하면 "GitHub 쪽에 이미 뭔가 존재하고 있는데, 네 로컬엔 그게 없으니까 먼저 pull해서 받아와야 해"라는 뜻이다.
그래서 이제는 도저히 어떻게 해야할 지 몰라서 챗gpt 한테 도움을 요청했다. 챗 gpt는 나에게 두가지 해결방법을 제시해줬다. 제시한 방법은 아래와 같다.
☑️ 해결 방법(2가지 중 택 1)
🔹 방법 1 : 강제로 push (내 로컬이 우선이야! GitHub 내용 덮어쓰기)
git push -u origin main --force
- 이 방법은 GitHub에 있는 기존 내용이 사라지고, 지금 내 로컬 커밋 내용으로 덮어써진다.
- GitHub에 올라간 파일이 중요한 게 아니라면 이걸 써도 된다.
🔹 방법 2 : 먼저 GitHub 내용 받아오고 합치기 (둘 다 살리고 싶을 때)
git pull origin main --rebase
git push -u origin main
- 이건 GitHub 쪽에 README나 기타 초기 커밋이 있을 때 유용하다.
- 충돌이 없으면 바로 push 가능해지고, 만약 충돌이 발생하면 직접 머지해줘야 된다.
나는 두번째 방법을 선택했고 명령어를 입력하자마자 바로 또 다른 에러가 떴다.

수 많은 글 들 중 눈에 띄는 새로운 에러 메시지가 보였다.
" cannot pull with rebase: Your index contains umcommitted changes. "
이건 작업 중이던 변경사항이 아직 커밋되지 않아서 pull을 못하겠다는 뜻인데, 나는 분명 작업을 다 끝내고 커밋을 했는데 내가 모르고 있던 변경사항이 있나? 하고 곰곰히 생각해봐도 도저히 없는 것 같아 혹시 몰라서 git status
를 입력해봤다.
** git status : 현재 작업(Working tree)의 상태를 찍어볼 수 있는 명령어

아니나 다를까 문제가 되는 원인이 바로 나왔다.
내가 FloseEx.java 파일을 삭제했는데 아직 커밋을 안 한 상태라서 Git이 pull을 막고 있었던 것이다.
그렇기 때문에 삭제한 파일을 커밋을하고 원격 저장소에서 pull을 받고 push를 할 것이다.
☑️ 해결 방법
1. 삭제한 파일을 커밋하기
git commit -m "삭제된 파일 커밋"
2. 원격 저장소에서 pull 받기 (rebase 방식)
git pull origin main --rebase
3. 정상적으로 받아졌다면 이제 push
git push -u origin main

명령어를 순서대로 입력하니 push도 성공했고, GitHub에도 main 브랜치로 커밋 올라간게 확인이 되었다!
'GitHub & Git' 카테고리의 다른 글
[Git] errer: src refspec main does not match any 해결방법 (0) | 2025.04.09 |
---|---|
[Git] Git 다운로드 및 설치 안내 가이드 (0) | 2024.06.18 |
[Git] git을 이용해서 내 컴퓨터로 코드 가져오기 (0) | 2024.06.18 |
백준, 프로그래머스 Github에 연동하기 (0) | 2024.02.07 |
[GitHub] rejected-non-fast-forward 에러 해결 (1) | 2023.11.21 |
전통적으로 Git에서는 기본 브랜치 이름이 master 였지만 2020년을 전후로, 특히 Black Lives Matter 운동 이후로 많은 개발자 커뮤니티와 회사들이 master는 노예제(master-salve) 시스템을 연상시킬 수 있기 때문에 2020년부터 GitHub은 새로운 저장소의 기본 브랜치 이름을 main으로 자동 설정하게 바꿨다.
그러나 IntelliJ나 Git 초기 설정에서는 여전히 master로 생성되는 경우가 많고 나 또한 master로 브랜치가 생성되었기 때문에 git branch를 master에서 main으로 변경했던 과정을 포스팅 할려고 한다.
우선, git branch를 master에서 main으로 변경하는 방법은 아래와 같다.
🔧 Git branch를 master에서 main으로 변경하는 방법
✅ 1. 현재 브랜치 이름 확인 (이미 알고 있겠지만 확인용)
IntelliJ 하단의 Git 탭 또는 터미널에서 아래 명령어로 확인
git branch
✅ 2. 브랜치 이름 변경( master
→ main
)
git branch -m main
-m
: 브랜치 이름을 바꾸는 명령어
✅ 3. 원격 저장소에 새 브랜치 (main
) 푸시
git push -u origin main
✅ 4. GitHub에서 기본 브랜치를 main
으로 변경
1. Github에서 접속해서 해당 Repository 들어가기
2. Settings → Branches 메뉴로 이동
3. Default branch 항목에서 main으로 바꾸기
✅ 5. 예전 브랜치 ( master
) 삭제 (선택사항)
GitHub에서 master가 더 이상 필요 없다면 삭제
git push origin --delete master
위와 같은 순서대로 하다가 'git push -u origin main' 명령어를 실행하는 순간 아래와 같이 오류가 발생했다.

' error: spc refspec main does not match any '
이 메세지는 로컬에 아직 main이라는 브랜치가 없어서 push 할 수 없다는 뜻이다.
github에 main과 master 브랜치 둘 다 있는데 왜 실패한건지 알 수는 없지만 일단 에러가 떴으니 에러를 해결하고자 한다.
혹시 나와 같이 똑같은 에러가 떴다면 해결 방법은 아래 블로그에 포스팅 해놨다.
🔻error: spc refspec main does not match any 에러 해결 방법
[Git] errer: src refspec main does not match any 해결방법
늘 Eclipse만 쓰다가 IntelliJ로 Github 연결해서 첫 commit을 할려고 하는데 main에 커밋되지않고 master에서 커밋이 되어서 master->main으로 변경하다가 발생한 오류로 해결 방법을 포스팅 해보려고 한다. e
kimhyejin1030.tistory.com
하지만 여기서 에러가 쉽게 해결되었다면 이 블로그를 포스팅 하지 않았을 것이다.
위 블로그와 같이 순서대로 따라하다가 또 다른 에러를 만났다.

이 에러를 분석해보자면 아래와 같다.
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://github.com/kimhyejin1030/Java.git'
hint: Updates were rejected because the remote contains work that you do not have locally.
이건 GitHub 원격 저장소( main
)에 있는 내용과 충돌이 발생해서 push가 거부된 것이다.
쉽게 말하면 "GitHub 쪽에 이미 뭔가 존재하고 있는데, 네 로컬엔 그게 없으니까 먼저 pull해서 받아와야 해"라는 뜻이다.
그래서 이제는 도저히 어떻게 해야할 지 몰라서 챗gpt 한테 도움을 요청했다. 챗 gpt는 나에게 두가지 해결방법을 제시해줬다. 제시한 방법은 아래와 같다.
☑️ 해결 방법(2가지 중 택 1)
🔹 방법 1 : 강제로 push (내 로컬이 우선이야! GitHub 내용 덮어쓰기)
git push -u origin main --force
- 이 방법은 GitHub에 있는 기존 내용이 사라지고, 지금 내 로컬 커밋 내용으로 덮어써진다.
- GitHub에 올라간 파일이 중요한 게 아니라면 이걸 써도 된다.
🔹 방법 2 : 먼저 GitHub 내용 받아오고 합치기 (둘 다 살리고 싶을 때)
git pull origin main --rebase
git push -u origin main
- 이건 GitHub 쪽에 README나 기타 초기 커밋이 있을 때 유용하다.
- 충돌이 없으면 바로 push 가능해지고, 만약 충돌이 발생하면 직접 머지해줘야 된다.
나는 두번째 방법을 선택했고 명령어를 입력하자마자 바로 또 다른 에러가 떴다.

수 많은 글 들 중 눈에 띄는 새로운 에러 메시지가 보였다.
" cannot pull with rebase: Your index contains umcommitted changes. "
이건 작업 중이던 변경사항이 아직 커밋되지 않아서 pull을 못하겠다는 뜻인데, 나는 분명 작업을 다 끝내고 커밋을 했는데 내가 모르고 있던 변경사항이 있나? 하고 곰곰히 생각해봐도 도저히 없는 것 같아 혹시 몰라서 git status
를 입력해봤다.
** git status : 현재 작업(Working tree)의 상태를 찍어볼 수 있는 명령어

아니나 다를까 문제가 되는 원인이 바로 나왔다.
내가 FloseEx.java 파일을 삭제했는데 아직 커밋을 안 한 상태라서 Git이 pull을 막고 있었던 것이다.
그렇기 때문에 삭제한 파일을 커밋을하고 원격 저장소에서 pull을 받고 push를 할 것이다.
☑️ 해결 방법
1. 삭제한 파일을 커밋하기
git commit -m "삭제된 파일 커밋"
2. 원격 저장소에서 pull 받기 (rebase 방식)
git pull origin main --rebase
3. 정상적으로 받아졌다면 이제 push
git push -u origin main

명령어를 순서대로 입력하니 push도 성공했고, GitHub에도 main 브랜치로 커밋 올라간게 확인이 되었다!
'GitHub & Git' 카테고리의 다른 글
[Git] errer: src refspec main does not match any 해결방법 (0) | 2025.04.09 |
---|---|
[Git] Git 다운로드 및 설치 안내 가이드 (0) | 2024.06.18 |
[Git] git을 이용해서 내 컴퓨터로 코드 가져오기 (0) | 2024.06.18 |
백준, 프로그래머스 Github에 연동하기 (0) | 2024.02.07 |
[GitHub] rejected-non-fast-forward 에러 해결 (1) | 2023.11.21 |