치명적: 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
오류는 커밋 기록이 다른 분기를 병합하려고 할 때 발생합니다. 오류를 해결하는 두 가지 방법과 이를 방지하는 가장 좋은 방법을 살펴보았습니다.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn