본문 바로가기
Git

[Git] ! [rejected] main -> main (fetch first) 에러 해결

by holy_jjjae 2023. 9. 21.

 

 

작업하던 폴더를, 중간에 바탕화면으로 옮겼더니 이런 에러가 생겼다.

 

원인

! [rejected]  main -> main (fetch first)는 git push할 때 생기는 에러다.

→ 기존 데이터의 손실 방지를 위해, push를 막았다.

 원격 저장소와 local 저장소가 동기화되어있지 않은 상태

 

해결법

1. 해당 폴더삭제, 바탕화면에 새로 폴더생성, repository도 다시 생성했더니 되었다.

그리고 "폴더를 삭제하지 않고도" 해결할 수 있는 방법 몇개를 가져와봤다.

 

2. 강제로 master branch에 push 하기 

git push origin +main	
git fetch origin main

 

변경 내용만 반영되는 것이 아니라, 소스 "전체"가 push 되어 버린다.

(기존 데이터 손실 위험)

 

=> 협업 중에 이 방법을 쓰면 팀원 소스가 덧씌워져서 날아갈 수 있다.

 

main branch를 생성해서 base를 새롭게 설정하고 (rebase), 동기화해주면 끝! 

 

3. 동기화해서 push해보기 

[에러 메시지 분석]

hint: Updates were rejected because the remote contains work that you do
// 원격에 수행된 작업이 포함되어 있어, 업데이트가 거부되었다.
hint: not have locally. This is usually caused by another repository pushing
// 로컬에 없다. 다른 repository pushing으로 발생되었다.
hint: to the same ref. You may want to first integrate the remote changes
// 원격에서 변경된 것들을 통합해라.
hint: (e.g., 'git pull ...') before pushing again.
git pull.. push하기 전에 
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
//  'git push --help'의 'Note about fast-forwards'를 참고

 

[해결법]

1. repository 가져오기 
git pull master origin

2. 다시 push 해보기 
git push https://내 깃허브주소/~.git

 

 

해결된 화면