1. 개요
Git 에는 분기 에 공통 히스토리 기반이 없는 상황이 있습니다 . 따라서 병합하려고 하면 "관련 없는 기록 병합 거부" 오류가 발생합니다. 이 사용방법(예제)에서는 이 오류를 수정하는 방법과 향후 프로젝트에서 이 오류를 방지하는 방법에 대해 설명합니다.
2. 분기가 관련 없는 기록을 가질 수 있는 이유는 무엇입니까?
분기에 관련 없는 기록이 있는 경우의 시나리오를 살펴보겠습니다. 관련되지 않은 기록 기반을 갖는 가장 일반적인 이유는 분기를 서로 독립적으로 시작하기 때문입니다. 예를 들어 로컬 컴퓨터에서 새 Git 프로젝트를 시작한 다음 원격 GitHub 브랜치에 연결하면 이러한 브랜치의 기록 기반이 달라집니다.
유일한 예외는 분기 중 하나에 커밋이 없는 경우입니다. 이 경우 문제 없이 병합되어야 합니다. 그렇지 않으면 다음 예와 같이 "관련 없는 기록 병합 거부" 가 표시됩니다.
$ git pull origin main
...
fatal: refusing to merge unrelated histories
보시다시피 git pull 명령을 사용하여 일반적이지 않은 기록이 있는 분기를 병합 할 수 없습니다 .
3. 오류 수정 방법
위의 오류를 수정하려면 git pull <remote> <branch> 명령 다음에 –allow-unrelated-histories 옵션을 사용해야 합니다 .
- <remote> 는 원격 저장소 URL 또는 짧은 이름 출처입니다 .
- <branch> 는 병합하려는 브랜치 이름입니다.
예를 들면 다음과 같습니다.
$ git pull origin main --allow-unrelated-histories
–allow -unrelated-histories 옵션은 공통 히스토리 기반이 없는 브랜치 병합을 허용한다고 Git에 알리고 오류 없이 병합을 완료해야 합니다. Git 버전 2.9 또는 이전 버전의 경우 이 옵션이 필요하지 않으며 이 옵션 없이도 병합이 작동해야 합니다. Git 버전을 확인하려면 git –version 명령을 사용할 수 있습니다.
4. 향후 오류를 방지하는 방법
일반적으로 원격 리포지토리와 독립적으로 로컬 리포지토리 분기를 만드는 것은 모범 사례가 아닙니다. 보다 안정적인 방법은 다음과 같이 git clone 명령 을 사용하여 원격 저장소를 로컬 시스템에 다운로드하는 것입니다 .
$ git clone <repo_url>
이렇게 하면 원격 서버에서 리포지토리를 복사하고 커밋 히스토리 베이스는 원격 및 로컬 분기 모두에 대해 동일하게 유지됩니다.
5. 결론
이 예제에서는 Git이 관련 없는 히스토리 병합을 거부할 때 분기를 병합하는 방법에 대해 설명했습니다. 먼저 이 오류가 발생할 수 있는 경우를 살펴보았습니다. 그런 다음 –allow-unrelated-histories 옵션을 사용하여 수정했습니다. 마지막으로 향후 프로젝트에서 이 오류를 방지하는 방법을 배웠습니다.