국비지원교육_팀프로젝트

[에러] Git push, pull이 안되는 경우 ( fatal: refusing to merge unrelated histories )

EunaSon 2023. 10. 10. 22:21

여태까지 작업한 내용을 소스트리를 이용해 깃허브에 업로드해보았다

Add 를 통해 이클립스로 작업중인 프로젝트(의 로컬 경로)를 가져와서 소스트리와 프로젝트를 연동했으나

Push도, Pull도 되지 않음

Fetch만 되고 있음

원인을 찾아보니 원격저장소에 README 파일을 생성해두어서 인듯 하다

 

Pull 시 에러 메시지

에러메시지 내용

: 원격저장소의 master 브랜치에서 로컬저장소의 FETCH_HEAD를 merge하는 것이 거부되었다

commit 히스토리가 서로 관련이 없다 = 서로 관련성이 없기 때문에 merge할 수 없다는 것

 

merge가 안되는 이유

merge는 원격저장소와 로컬저장소가 공통으로 가지고 있는 commit 지점이 존재해야 함

그런데 공통으로 가지고 있는 commit 지점이 존재하지 않기 때문에 merge 자체가 되지 않는것

 

fetch는 되는 이유

fetch는 원격 저장소에 있는 내용을 가져오지만 자동으로 로컬저장소에 merge하지는 않음

원격저장소의 내용을 확인만 하고 로컬에 merge하고 싶지 않을 때는 fetch를 이용함

fetch 를 실행하면 원격 저장소의 최신 이력을 확인할 수 있음

이때 가져온 최신 커밋 이력은 이름없는 브랜치(FETCH_HEAD)로 로컬에 가져오게 됨

여기서 HEAD는 가장 마지막에 행해진 commit정보가 담김

 

FETCH_HEAD

FETCH_HEAD는 이름없는 브랜치로, 원격저장소에 있는 커밋을 로컬로 가져오게 됨

이 브랜치로 체크아웃도 가능함

 

Pull 명령어

pull = fetch + merge

즉, pull 명령어는 원격 저장소에 있는 내용을 가져와서 + 자동으로 로컬 저장소에 merge함

git fetch + merge RETCH_HEAD 인 셈

 

=>

해결 방법 

- git clone 명령어를 통해 원격저장소를 복제해옴

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

 

 

 

두번째 방법을 사용하였다.

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

 

git pull origin main --allow-unrelated-histories 로 readme를 local에 가져온 후 merge 시키고,

다시 push를 해보니 에러없이 push 성공하였다

github 레파지토리에서 프로젝트가 업로드된 것을 확인하였다

 

 출처

https://wonin.tistory.com/370

'국비지원교육_팀프로젝트' 카테고리의 다른 글

231005  (0) 2023.10.05
231004  (0) 2023.10.05
230924  (0) 2023.09.24
230922  (0) 2023.09.24
230921  (0) 2023.09.22