리베이스에서 관련 없는 히스토리 병합을 거부하는 Git
'깃 리베이스 오리진/개발' 중에 Git에서 다음과 같은 오류 메시지가 표시됩니다:
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
내 Git 버전은 2.9.0입니다. 이전 버전에서는 정상적으로 작동했습니다.
새 릴리스에 도입된 강제 플래그를 사용하여 관련 없는 히스토리를 허용하는 이 리베이스를 계속 사용하려면 어떻게 해야 하나요?
1858
14
기본 동작은 Git 2.9부터 변경되었습니다:
공통 기반이 없는 두 브랜치를 병합하는 데 사용되는 가 기본적으로 기본적으로 공통점이 없는 두 브랜치를 병합할 수 있도록 하는 데 사용되며, 이로 인해 기존 프로젝트의 새로운 히스토리가 프로젝트의 새로운 히스토리를 생성한 다음 의심하지 않는 관리자가 가져올 수 있습니다, 불필요한 병렬 히스토리를 기존 프로젝트에 병합할 수 있었습니다. 기존 프로젝트. 이 명령은 기본적으로 이 작업을 허용하지 않도록 기본값으로 설정되어 있으며, 드문 경우에만 사용할 수 있도록 이스케이프 해치
--allow-unrelated-histories
옵션을 이 옵션은 독립적으로 시작된 두 프로젝트의 히스토리를 병합하는 드문 경우에만 병합하는 드문 경우에 사용할 수 있습니다.자세한 내용은 Git 릴리스 변경 로그를 참조하세요.
허용하지 않는 히스토리는
--allow-unrelated-histories
를 사용하여 병합을 강제로 수행할 수 있다.제 경우에는 모든 시도, 특히 원격으로 Git 저장소를 추가한 후 첫 번째 풀 리퀘스트에서 '치명적: 관련 없는 히스토리 병합 거부'라는 오류가 발생했습니다.
이런 식으로 풀 리퀘스트에
--allow-unrelated-histories
플래그를 사용하면 효과가 있었습니다:하려고 다음과 같은 명령을 실행합니다:
이 문제를 해결합니다.
이러할 때 나는 설정의 로컬 저장소에 처음이다. 다음 갔을 GitHub 고 새로운 생성합니다. 가
가를 밀어/잡아당기기에,나는 같은 치명적인:unrelated_histories`오류가 있습니다.
여기에 내가 어떻게 고정된다:
이를 위해 다음 명령을 입력하십시오:
예를 들어,
참고:
GitHub 관련이 없는 역사 문제점
하시지 않겠습니까 Vim 편집 창:
-삽입 commit 메시지 -누릅Esc(을 종료" 하려면"모드) 다음:(결장),다음x(small"x") 마지막으로 칠Enter얻을 수 Vim -
git push 정-업스트림 원산지<점>
나는 같은 문제를 가지고 있었습니다. 이것을 보십시오:
도
git pull--리베이스 개발
경고 이것은 잠재적으로 덮어쓰 원격 저장소의
이것은 나를 위해 일했:
이후 모든 다른 대답은 실제로는지에 대한 질문에 대답하는 솔루션은 여기에에서 영감을[이 대답](https://stackoverflow.com/a/43009909/242365 에서)관련된 질문입니다.
그래서 당신은 당신의 오류를 하
git 은 리베이스
:이 오류는't 이 실제로 취소 리베이스,하지만 당신은 지금 그것의 중간:
할 수 있도록 지금 하는 병합니다. 을 찾아 부모가 커밋의 원 병합 commit:
의 알아보십시의 두 부모가 하는 것에 합병되었으로 현재 중 하나(아마 두 번째,하나인지 확인을 가진
git 로그 222222222
),그리고 다음을 수행합 병합으로 복사하 commit 메시지 원래의 병합 commit:나는 같은 문제를 가지고 있었습니다. 문제를 원격했던 무언가가 예방이다.
내가 처음 만든 로컬 저장소. 추가
라이센스
와README.md
파일을하고 최선을 다하고 있습니다.그때 나는 원하고 원격 저장소에 세 번째로 인구가 많은 도시 중 하나습니다. 여기에 제가 실수를 확인하"초기화 이 저장소 읽어보기"를 만들어 추가 정보.md 원격지에서 너무입니다.
그래서 지금 실행하는 경우
내:
지금 이것을 극복하기 위하여 나가
결과에서 아래에 오류가:
I tried:
결과:
솔루션:
나는 원격 저장소 만들(나는 생각만을 제거하는
파일 읽어보기
일한 수 없습니다)및 그 후 아래했:이것은 일반적으로 발생에 투입할 때 첫 번째 시간을 원격 저장소에 있습니다. 로 오류 분명히 말하기를"부 병합하는 관련이 없는 역사",우리가 필요한 사용할 수 없는-기록 국기입니다.
이제할 수 있습니다.충돌 우리가 해결해야 할 수 있습니다. 그 후 그냥 commit 코드를 푸시하시면 됩니다.
저도 이 문제로 어려움을 겪었지만 해결 방법을 찾았습니다.
위와 같은 오류가 발생하면 병합 커밋을 선택한 다음 리베이스를 계속 진행하세요:
내가 사용하여 리베이 몇 년 동안 나는 발생하지 않은 문제이다. 그러나,당신의 첫 번째 문제는 당신이 그것을보십시오에서 직접 원격지점
개발
에서 원격 저장소라는근원
. 는 말 그대로 잘못하기 때문에,리베이 위험한 명령하는 restructeres git 역사입니다. 즉,당신은 그것은 첫 번째 시도에서 로컬 저장소 및 밀어만,그것이 당신을 위해 작동하는 경우으로 예상된다.그래서,리베이스 내 일반적인 작업 흐름을 다음과 같습니다(하지만 제발 계속 마음에서는 사용하지 않아야 합니다 리베이스에서 지점,당신은하지만 하나 comittee. 이러한 지점,사용 단순히 병합하고 충돌을 해결하는 해당되는 경우):
master
;으로 한 줄의 명령):git 체크아웃 마스터&&git pull 마스터 원산지&&git 체크아웃 개발
git push-f 원 개발
이미 언급하고 있음을 염두에 두어야 리베이스를 조작하 git 역사,일반적으로 나쁜 것은 아니다. 그러나,그's 않는 것이 가능하다에서 가지는 아무도 투. 유지하기 위해서는 지점을 풀 수 있는 다른 개발자가 사용하는 또 다른 병합 전략을 같이 병합체,스쿼시 또는 cherrypick. 그래서 다른 말로:리베이어야'nt 의 도구로 개발. 그것은에 대한 잘 작동하는 경우,당신은 일하는 사람이 있습니다.
우리가 사용하는 기능 지 strategey. 이에,나는 일반적으로 사용하여 리베이스를 얻기 위해서"업데이트 및"에서 다른 개발자,에서 일어난 그 사이에서입니다. 그렇게 하면,그것의 크기를 줄 커밋에서 볼 수 있는 풀 요청을 합니다. 따라서,그것은 그것을 쉽게 코드토 내에서 변경 이 기능을 지점에 있습니다.