remote repository를 local host pc에 add하는 방법
2025. 5. 8. 12:39ㆍGit
현재 remote repository가 empty history 상태일 경우,
두 가지 방법의 local host pc에 add하는 방법이 있음.
1. …or create a new repository on the command line
echo "# hello" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/intheeast/hello.git
git push -u origin main
2. …or push an existing repository from the command line
git remote add origin https://github.com/intheeast/hello.git
git branch -M main
git push -u origin main
✅ 로컬과 리모트 리포지토리의 히스토리가 맞지 않을 경우에 해결 방법
git merge origin/main --allow-unrelated-histories
이 명령은 두 Git 저장소의 히스토리가 서로 전혀 연결되어 있지 않아도 강제로 병합(merge) 하도록 허용하는 명령어입니다.
🔍 명령어 구성 해석
git merge origin/main --allow-unrelated-histories
부분 | 의미 |
---|---|
git merge |
현재 체크아웃된 브랜치와 다른 브랜치를 병합 |
origin/main |
원격 저장소(origin )의 main 브랜치. 이걸 병합하려는 대상 |
--allow-unrelated-histories |
두 브랜치의 커밋 그래프에 공통 조상(commit ancestor) 이 없더라도 병합을 강제로 수행 |
❓ 왜 --allow-unrelated-histories
가 필요한가?
기본적으로 Git은 두 브랜치가 동일한 히스토리 기반(공통 조상)을 공유해야 병합을 허용합니다.
그러나 다음과 같은 경우에는 공통 조상이 존재하지 않습니다:
- 🔀 두 개의 독립적인 Git 저장소를 합치는 경우
- 예:
git init
으로 시작한 로컬 저장소에 GitHub에서 클론해 온 저장소를 병합할 때
- 예:
- 🔄 이전에 Git history를 삭제한 경우
- 예:
.git
디렉토리를 지우고 다시git init
후 푸시/풀을 시도
- 예:
- 📦 프로젝트 템플릿을 따로 가져와 병합하려는 경우
- 예: boilerplate 저장소와 내 프로젝트를 합칠 때
이때, Git은 기본적으로 다음과 같은 오류를 발생시킵니다:
fatal: refusing to merge unrelated histories
→ 이 오류를 무시하고 병합을 강제하려면 --allow-unrelated-histories
옵션을 붙여야 합니다.
✅ 실행 예제
git init
git remote add origin https://github.com/user/repo.git
git fetch origin
git merge origin/main --allow-unrelated-histories
- 이 시나리오는 로컬 저장소를 먼저 만들고, 나중에 원격 저장소를 연결한 후 병합하려는 경우에 흔합니다.
🧠 정리
항목 | 설명 |
---|---|
목적 | 서로 다른 Git 히스토리를 가진 브랜치를 병합할 때 오류 방지 |
주요 사용 시나리오 | 독립된 프로젝트 병합, 이관, 초기화된 로컬 저장소와 기존 원격 병합 |
관련 오류 메시지 | fatal: refusing to merge unrelated histories |
권장 여부 | 임의로 히스토리를 합치는 경우가 아니라면 사용 주의 (명시적으로 사용해야 함) |
'Git' 카테고리의 다른 글
GitBash Credentials 수정 (0) | 2024.11.14 |
---|---|
git log --oneline --decorate --graph --all (0) | 2024.07.25 |
Refs (0) | 2024.07.24 |
git diff (0) | 2023.12.12 |
Tracking branch와 Upstream (0) | 2023.06.30 |