ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • fatal: refusing to merge unrelated histories
    git 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

    댓글

Designed by Tistory.