그럼에도 불구하고

👨‍💻

[Git, GitHub] ! [rejected] master -> master (non-fast-forward) 해결 방법 본문

이모저모/Git, GitHub

[Git, GitHub] ! [rejected] master -> master (non-fast-forward) 해결 방법

zenghyun 2023. 1. 2. 18:04

 

! [rejected] master -> master (non-fast-forward) 해결 방법에 대해 알아보자

 

 

 

작업한 것을 push 하는 과정에서 이런 에러가 발생했다. 

 

상황

  • github에서 저장소를 생성 후 최초 commit에 성공했고 파일 수정 후 다시 commit를 하려다 발생
  • git add .  =>  git commit -m "second commit"  =>  git push origin master 입력 시 오류 발생
  • git remote -v로 연결 경로를 확인해보면 내가 설정한 경로로 연결이 되어있음 

 

hint로 나온 문구를 해석해 보면, GitHub에 생성된 원격 저장소와 로컬에 생성된 저장소 간 공통분모가 없는 상태에서 병합하려는 시도로 인해 발생. 

 

기본적으로 관련 없는 두 저장소를 병합하는 것이 안되도록 설정되어 있어서 자체적으로 push를 막는 상황이었다.

 

 

원인

혹시 몰라, 구글링을 해보니 gut push를 하고 GitHub repository에서 파일을 삭제했었는데 이것이 원인이었다.

파일은 repository에서 삭제됐으나 기존에 남아있는 파일에는 해당 파일이 남아있어서 충돌이 된 게 원인 같았다.

 

 

 

해결

 

구글링을 통해 여러 가지 방법을 찾았는데, 그중 가장 간단한 방식이 있었다.

 

1. git push origin +master

 git push origin +master를 사용하면, 강제 push가 진행된다.

 

"+"를 붙여 명령어를 작성한 결과, 강제적으로 push 되지만, 이럴 경우 기존 repository에 있던 파일이 날아간다. 

(그리고 마지막에 push 한 파일만 올라가게 된다.) 

 

(결론만 보면?) 올라갔으니 된 것 같지만 이건 근본적인 해결이 되지 않는다.

오류를 해결하지 못할뿐더러 리스크가 매우 크며, 실제로 사용하기는 거의 불가능하다. 

 

 

2. git pull 시에 –allow-unrelated-histories 옵션 추가하여 관련 없었던 두 저장소를 병합하도록 허용

 

 

git pull origin master --allow-unrelated-histories

 

git에서는 서로 관련 기록이 없는 이질적인 두 프로젝트를 병합할 때 기본적으로 거부하는데, 이것을 허용해 주는 것이다.

 

단,  2번 방법의 경우 브렌치에 pull 할 권한이 없으면 사용할 수 없다. 

 

 

결국 2번 방법을 사용해서 문제를 해결했다. 

1번 방법의 경우 웬만하면 사용하지 않는 것이 맞는 것 같다. 

 

 

ref:

 

[Git] ! [rejected] master -> master (non-fast-forward) 해결 방법

ubuntu@server:~/PythonHome/TestTA/api$ git push --set-upstream origin master Username for 'https://github.com': SOMJANG-42MARU Password for 'https://SOMJANG-42MARU@github.com': To https://github.com/SOMJANG-42MARU/MaruKeyword.git ! [rejected] master -> mas

somjang.tistory.com

 

 

github 강제 push 방법 절대! 하지마세요!!! ( error: failed to push some refs to )

[발생 문제 (Error)] ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/devAon/SOPT-SERVER-nodejs.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote cou

aonee.tistory.com

 

Comments