프로그래밍⚡️/git

깃허브 master -> master (non-fast-forward) 에러

Kwangkki 2023. 1. 23. 19:33

커밋 후에 push 과정에서 실패 메세지가 뜬다.

 

체크해본 것은 아래와 같다.

1. git remote url도 레파지토리 경로 확인

2. 폴더에 .git 있는지 확인. 혹시 다른 자식 폴더에 .git 파일 있는지

두가지를 체크해봤지만 별 문제가 없었다.

 

근데 알아보니 README 파일 수정 후 이런 에러가 뜰 수 있다고 한다.

생각해보니 깃허브에서 REAME 파일을 생성하고 수정했었다. 로컬에서 작업한 것이 아니고 깃허브에서 직접 작업하다보니 이런 충돌이 발생한 것 같다. 

 

 

이런 경우 몇가지 해결방법이 있다.

1. git pull 

위 상황 자체가 remote의 변경 사항이 로컬 변경 사항과 일치하지 않으면서 충돌한 것이다. 그렇기 때문에 이 둘을 일치시켜주면 되는데 그 명령어가 바로 git pull을 사용하는 것이다. 

git pull 브랜치명

git pull을 진행한 후 다시 push하면 local에도 remote의 변경 사항이 저장되기 때문에 정상적으로 push된다.

추가적으로 아래 pull 명령어를 입력하면 두 브랜치가 병합되기 때문에 해결할 수 있다고 한다. 좋은 방법은 아니라고 한다.

git pull origin master --allow-unrelated-histories

 

 

2. git push origin +master

master 앞에 +를 붙이면 강제푸시가 된다. 이 방법은 절대 좋은 방법이 아니기 때문에 어쩔수 없이 사용해야할 상황에서만 사용하는 것이 좋다. 근데 난 궁금해서 이 방법으로 해결했다.. 이렇게 푸시하니 README 파일이 삭제되더라. REAME 충돌이라 다행이지 위험하긴 하다.

git push origin +master