Error

[Git] git push 중 오류 (non-fast-forward)

hye-ne 2024. 11. 7. 16:30
git push -u origin main

 

위 명령어를 이용해서 push를 하려고 하는데 아래와 같은 오류가 발생했다. 

 ! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/~~.git'
hint: Updates were rejected because the tip of your current branch is behind    
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

 

에러 메세지에 따르면, 원격 저장소의 main 브랜치가 로컬 main 브랜치보다 앞서 있는 상태라서 충돌이 발생한다고 한다. 

이러한 방법에 해결방법이 있는데 방법2를 사용하여 해결하였다. 

 

방법 1. 원격 저장소의 변경 사항 가져와 푸시하기

1. 원격 저장소의 변경 사항 가져오기

  • 원격 main 브랜치의 변경 사항을 로컬 main 브랜치에 가져와야 하는데 아래의 명령어를 사용하여 원격 저장소의 main 브랜치와 로컬의 main 브랜치를 병합한다.
  • 병합 중 충돌이 발생하면, 충돌이 난 파일을 편집하고 수정 후 저장한 다음 커밋한다.
git pull origin main

 

2. 변경 사항 푸시하기

  • 병합이 완료되었다면, 로컬의 main 브랜치를 원격으로 푸시한다. 
git push origin main

 

방법2. 위의 방법들로도 해결되지 않는 경우 (강제 푸시)

  • 로컬에서만 작업한 내용이 중요하고 원격의 변경 사항은 무시하고 싶은 경우 다음 명령어를 사용해서 에러를 처리한다.
  • 강제 푸시는 원격 저장소의 히스토리를 덮어쓸 수 있으므로 주의해서 사용하자. 특히, 협업 중인 경우 다른 팀원의 작업물이 사라질 수도 있다! 
git push -f origin main