HOWTO · Git
치명적: Git에서 관련 없는 기록 오류 병합 거부
이 문서에서는 치명적 문제인 Git에서 관련 없는 기록 병합 거부 오류를 해결하는 데 필요한 단계를 설명합니다.
이 페이지의 내용
이 문서에서는 Git에서 치명적: 관련 없는 기록 병합 거부 오류를 해결하는 데 필요한 단계를 설명합니다. 일반적으로 두 개의 관련 없는 Git 프로젝트를 하나의 분기로 병합하려고 할 때 이러한 오류가 발생합니다.
수신자 브랜치에 커밋이 있고 클론에 호환되지 않는 태그가 있으면 팝업됩니다.
Git의 치명적: 관련 없는 기록 병합 거부 오류의 일반적인 시나리오
다음은 Git에서 치명적: 관련 없는 기록 병합 거부 오류가 발생할 수 있는 몇 가지 경우입니다.
-
커밋이 포함된 로컬 리포지토리가 있고 기존 원격 리포지토리에서 가져오려고 합니다. 히스토리가 다르기 때문에 Git은 진행 방법을 모릅니다.
따라서 오류 메시지입니다.
-
.git디렉토리가 손상되었습니다. -
분기가 다른
HEAD위치에 있을 때.
Git의 치명적: 관련 없는 기록 병합 거부 오류 해결
관련 없는 병합을 허용하여 오류를 해결할 수 있습니다. 아래와 같이 풀 요청에 --allow-unrelated-histories 플래그를 추가하여 이를 수행할 수 있습니다.
$ git pull origin master --allow-unrelated-histories
Git을 사용하면 관련 없는 히스토리가 있는 브랜치를 병합할 수 있습니다. 파일이 충돌하지 않으면 매우 쉽습니다.
위의 방법이 가장 쉽습니다. 그러나 동일한 목적지로 가는 더 긴 경로가 있습니다.
먼저 현재 커밋을 모두 언스테이징하고 보관해야 합니다. 그런 다음 원격 리포지토리에서 끌어와 숨김을 새 복제본에 적용할 수 있습니다.
이렇게 하면 병합 충돌이 발생할 경우 더 쉽게 처리할 수 있습니다.
마지막 커밋의 모든 파일을 언스테이징하려면 아래 명령을 사용합니다.
$ git reset HEAD~
아래 명령을 실행하여 파일을 숨깁니다.
$ git stash
이제 깨끗한 작업 트리가 생겼고 풀 리퀘스트를 실행할 수 있습니다. 그런 다음 작업 트리에 숨겨진 변경 사항을 언스태시하고 적용합니다. 다음을 실행할 수 있습니다.
$ git stash pop
위의 명령은 숨김을 적용하고 폐기합니다. 숨김을 적용하고 유지하려면 다음을 실행할 수 있습니다.
$ git stash apply
그렇다면 이 오류 메시지를 피하는 가장 쉬운 방법은 무엇입니까?
커밋이 포함된 로컬 분기로 원격 리포지토리를 가져오지 마십시오. 필요한 경우 새 브랜치를 생성하고 변경 사항을 수동으로 끌어와 병합합니다.
결론적으로 fatal: refusing to merge unrelated historys 오류는 커밋 기록이 다른 분기를 병합하려고 할 때 발생합니다. 오류를 해결하는 두 가지 방법과 이를 방지하는 가장 좋은 방법을 살펴보았습니다.