Skip to main content

git pull --allow-unrelated-histories


1. git pull --allow-unrelated-histories 란?

--allow-unrelated-histories는 Git에서 서로 연관되지 않은 두 히스토리를 강제로 병합할 때 사용하는 옵션이다.

보통 서로 다른 프로젝트를 하나로 합치거나, 원격 저장소와 로컬 저장소가 서로 공통 조상을 갖지 않을 때 사용한다.


2. 오류 상황 예시

fatal: refusing to merge unrelated histories

🧨 언제 발생하나?

  • 로컬에서 git init으로 새 저장소 생성 후 커밋
  • 원격 저장소(GitHub)에 다른 초기 커밋이 존재 (예: README.md)
  • 이후 git pull origin main 시 위 오류 발생

3. 해결 방법

git pull origin main --allow-unrelated-histories
  • 두 히스토리 병합 강제 수행
  • 이후 충돌(conflict)이 발생할 수 있으니 수동으로 해결 필요

4. 사용 예

# 로컬 초기화
git init
git remote add origin https://github.com/user/repo.git

# 강제 병합
git pull origin main --allow-unrelated-histories

5. 주의사항

  • 한 번만 사용하면 충분: 병합이 끝나고 연결되면, 이후부터는 일반 git pull로도 작동합니다.
  • 병합 충돌 발생 가능성이 크므로 사용 후 커밋 기록 확인 필수

6. 관련 옵션

옵션

설명

--rebase

병합 대신 리베이스로 히스토리 깔끔하게 유지

--no-commit

병합하되 커밋은 직접 하고 싶을 때

--strategy=ours / theirs

충돌 시 우선할 히스토리 선택