-
fatal: refusing to merge unrelated historiesgit 2019. 12. 12. 00:17
repository와 README.md 생성 후 로컬저장소랑 연결했더니 push가 안된다..!!!
오류 원인: 공통된 commit 포인트가 없다!
push 명령은 로컬 저장소의 commit 목록과 원격저장소의 commit 목록을 비교한다.
그 후 원격 저장소의 마지막 commitID 와 동일한 commitID를 가진 로컬 저장소의 commit 시점을 찾은 뒤, 원격저장소의 마지막 commit과 연결한다
즉 원격 저장소에서 readme를 추가하는 commit이 원격 저장소에는 존재하지 않고, 따라서 현 상태에서는 둘을 연결할 수 없다
해결 방법:
1) 원격저장소를 삭제하고 다시 만든다
2) fetch나 pull 명령어로 원격 저장소의 마지막 commit을 로컬 저장소의 commit로그 맨 앞으로 받아온다
따라서 git pull 명령을 내리면
fatal: refusing to merge unrelated histories
오류가 발생한다
기본적으로 merge는 원격저장소와 로컬저장소가 공통적으로 가지고있는 commit 지점이 존재해야한다. 그 지점부터 병합을 시도하기 때문이다. 애초에 공통된 commit이 없기때문에 pull명령어를 사용할 수 없는 것이다.
** fetch = 원격저장소에 있는 내용을 가져오지만 자동으로 내 로컬 저장소에 merge하지않는다
원격 저장소의 내용을 확인하고 로컬에 merge하고 싶지 않을 때는 fetch를 사용한다
HEAD에는 가장 최신 commit 정보가 담긴다
FETCH_HEAD에는 원격 저장소의 가장 최신 commit 정보가 담긴다
FETCH_HEAD는 이름 없는 브랜치로 로컬에 가져오게 되고, FETCH_HEAD로 checkout도 가능하다
pull 명령어는 원격 저장소에 있는 내용을 가져올 뿐만 아니라, 자동으로 로컬 저장소에 merge 한다
즉 git pull = git fetch + merge FETCH_HEAD 인 셈이다
이 때 해결방법
1) git clone을 통해 원격 저장소를 복제해온다
2) pull 명령어에 옵션을 추가해 강제로 pull한다
git pull origin (branchname) --allow-unrelated-histories
출처: https://jobc.tistory.com/177
첫 Repository 생성 성공^.^
생활코딩 git 강의 듣길 잘했당...ㅎㅎ
'git' 카테고리의 다른 글
README.md에 이미지 넣기 (0) 2019.12.12 clone (0) 2019.12.10 원격저장소 만들기 (0) 2019.12.09 working copy/index/repository (0) 2019.12.09 reset/checkout (0) 2019.12.06