프론트 개발 블로그

[git error] github에 README.md 파일 생성 후 push rejected 발생 본문

Works

[git error] github에 README.md 파일 생성 후 push rejected 발생

maybe.b50 2022. 10. 24. 11:37

https://jobc.tistory.com/177

 

git push, pull (fatal: refusing to merge unrelated histories) 에러

원격 저장소를 remote로 설정하고 바로 push를 하면 몇가지 오류가 발생할 수도 있다. 예를 들어 아래와 같은 오류 메시지이다. 1 2 ! [rejected] master -> master (non-fast-forward) error: failed to push som..

jobc.tistory.com

위으 블로그 덕분에 해결할 수 있었음.


 

1. git push origin main 실행 시 아래와 같이 rejected 발생 

! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/xxx/xxx.git'

- Github에서 Repository 생성 시 README.md 파일 생성 함. 

  로컬 저장소에서 셋팅 된 소스를 push 하려고 했는데 위와 같이 rejected 되었다. 

- non-fast-foward : 원격 저장소의 main 브랜치가 로컬 저장소의 버전보다 이전버전이 아니다 라는 의미 

- 원격저장소에서 생성한 readme.md 파일의 이력이 로컬 저장소의 커밋 이력에는 없기 때문에 발생 된 에러. 

 

 

해결방법으로 readme.md 파일이 없이 저장소를 만들고 push 하거나 원격저장소의 마지막 commit(README.md 커밋이력)을 로컬 저장소의 commit 로그의 맨 앞으로 받아오는 방법이 있다. 

 

2. git pull 로 원격저장소 이력을 가져오려고 했더니, 관련없는 히스토리이므로 merge 가 거부됨 

git pull origin main
fatal: refusing to merge unrelated histories

- pull 명령어는 fetch + merge 를 한꺼번에 처리하는 명령어

- mege는 로컬 저장소와 원격 저장소가 공통으로 가지고 있는 commit 지점이 존재해야 그 지점부터 병합을 시도하기 때문에 위의 경우 pull 명령어를 사용할 수 없다.

 

3. pull 명령어에 옵션을 추가해 강제로 pull 함

git pull origin (branchname) --allow-unrelated-histories

- 강제로 pull 했을 때 로컬저장소 README.md 파일과 원격저장소 README.md 파일이 충돌하여 conflict 발생함

* branch            main       -> FETCH_HEAD
Auto-merging README.md
CONFLICT (add/add): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

 

4. 충돌난 부분 수정하여 다시 add, commit 하여 push 함 

반응형