깃허브 non-fast-forward 오류 해결

정재훈·2024년 3월 1일

발생한 에러

목록 보기
5/6

문제상황

  • 깃허브 저장소를 만들고 최초 commit을 하고 처음 push 하려고 했는데 오류 발생
  • git push origin main을 했는데 non-fast-forward 오류가 발생했다.

시도한 방법

git init으로 저장소 초기화도 해보고
git fetch, git merge, git pull도 해봤지만 해결이 되지 않았다.


원인

검색해서 찾아본 결과 깃허브에 생성된 원격 저장소와 로컬 저장소 간 공통점이 없는 상태에서 병합하려고 했을 때 발생한 문제였다.


해결방법

  1. git push origin +main
    이 명령어를 사용하면, 강제 push가 진행되어서 기존 저장소에 있던 파일이 날아가고
    마지막에 push한 파일만 올라간다.

    git push origin +main

    검색으로 찾은 방법이기 때문에 실제로 확인을 못해서 바로 테스트를 해보았다.
    새로운 repo를 만들고


    member 클래스 하나 만들고


    git push origin +main을 사용하여 성공


    결과는 기존에 .gitignore와 readme 파일이 사라지고 push된 파일만 올라간 것을 확인할 수 있다.

    이 방법은 결과만 봤을 때는 파일이 올라갔지만 근본적인 해결방법이 아니기 때문에 알아만 두는 것으로 하자.

  2. git pull에 --allow-unrelated-histories 옵션을 추가해 두 저장소를 병합
    git은 서로 관련이 없는 두 저장소를 병합할 때 기본적으로 거부하는데 이걸 허용해주는 것이다.

    git pull origin --allow-unrelated-histories

    하지만 2번의 경우는 브랜치에 pull 권한이 없으면 할 수가 없다.

    명령어 쓰기 전 프로젝트 파일 목록


    테스트 repo의 현재 파일 목록


    git pull origin --allow--unrelated-histories 명령어 정상적으로 사용


    프로젝트 목록에 readme와 pull test file이 pull된 것을 확인할 수 있다.

작성자는 2번을 사용해서 해결을 하였다.

profile
1년차 Java&Spring 백엔드 개발자입니다!

0개의 댓글