본문 바로가기
에러모음S/git & github

git non-fast-forward 에러 해결!! 원인 발견

by 율✌️ 2024. 5. 18.

 

 

💻  에러 상황 

로컬저장소 :  파일들을 git에 commit해둔 상태

원격저장소 :  저장소 생성 readme 파일만 만들어둔 상태

 

1. 'git push -u origin main' 명령어로 Github 원격저장소에 로컬파일들을 올리려고 했는데

아래와 같은 에러가 뜨며 pull 먼저 하라는 hint가 나옴.

‘ ! [rejected]        main -> main (non-fast-forward)’

 

2. 그래서 'git pull origin main' 하고 다시 push 했는데 계속 같은 에러가 뜸..

 

 


 

❗️❗️ 원인 발견 ❗️❗️

로컬저장소인 Head의 시작점(?)과 github 원격저장소인 main의 시작점(?)이 달라서 나는 에러

(이렇게 이해했고 이렇게 설명하는게 나의 최선이다.. 혹시 지나가다가 우연히 보시는 코딩 능력자분 계시다면 올바른 용어로 정정 부탁드려요... )

로컬의 시작점을 github 원격저장소와 같게 해준 로컬의 파일을 올려야한다. 

 


✅  해결방법

  1. 터미널에 git log 치고 가장최근의 commit id 복사해둔다. 
  2. :wq 빠져나온다. (Mac 버전)
  3. git fetch --all 한다. (github저장소에 있는 커밋을 로컬로 불러오는 작업)
  4. git reset origin/main --hard 한다. (원격저장소의 파일이 로컬에 덮어쓰여지며 시작점이 같아지게됨)
  5. git cherry-pick ${1번에서 복사해둔 commit id} 하면 최근 로컬에서 commit해둔 파일들이 추가된다. 
  6. 다시 git push 해보면 아주잘 올라간다. 

 


 

해 결