'깃 리베이스 오리진/개발' 중에 Git에서 다음과 같은 오류 메시지가 표시됩니다:
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
내 Git 버전은 2.9.0입니다. 이전 버전에서는 정상적으로 작동했습니다.
새 릴리스에 도입된 강제 플래그를 사용하여 관련 없는 히스토리를 허용하는 이 리베이스를 계속 사용하려면 어떻게 해야 하나요?
기본 동작은 Git 2.9부터 변경되었습니다:
공통 기반이 없는 두 브랜치를 병합하는 데 사용되는 --allow-unrelated-histories
옵션을
이 옵션은 독립적으로 시작된 두 프로젝트의 히스토리를 병합하는 드문 경우에만
병합하는 드문 경우에 사용할 수 있습니다.
자세한 내용은 Git 릴리스 변경 로그를 참조하세요.
허용하지 않는 히스토리는 --allow-unrelated-histories
를 사용하여 병합을 강제로 수행할 수 있다.
이러할 때 나는 설정의 로컬 저장소에 처음이다. 다음 갔을 GitHub 고 새로운 생성합니다. 가
git remote add origin <repository url>
가를 밀어/잡아당기기에,나는 같은 치명적인:unrelated_histories`오류가 있습니다.
여기에 내가 어떻게 고정된다:
git pull origin master --allow-unrelated-histories
git merge origin origin/master
... add and commit here...
git push origin master
이를 위해 다음 명령을 입력하십시오:
git pull origin branchname --allow-unrelated-histories
예를 들어,
git pull origin master --allow-unrelated-histories
참고:
나는 같은 문제를 가지고 있었습니다. 이것을 보십시오:
git pull origin master --allow-unrelated-histories
git push origin master
경고 이것은 잠재적으로 덮어쓰 원격 저장소의
이것은 나를 위해 일했:
git push origin master --force
이후 모든 다른 대답은 실제로는지에 대한 질문에 대답하는 솔루션은 여기에에서 영감을[이 대답](https://stackoverflow.com/a/43009909/242365 에서)관련된 질문입니다.
그래서 당신은 당신의 오류를 하git 은 리베이스
:
$ git rebase origin/development
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
이 오류는't 이 실제로 취소 리베이스,하지만 당신은 지금 그것의 중간:
$ git status
interactive rebase in progress; onto 4321beefdead
Last command done (1 command done):
pick 1234deadbeef1234deadbeef test merge commit
할 수 있도록 지금 하는 병합니다. 을 찾아 부모가 커밋의 원 병합 commit:
$ git log -1 1234deadbeef1234deadbeef
commit 1234deadbeef1234deadbeef
Merge: 111111111 222222222
Author: Hans Dampf
Date: Wed Jun 6 18:04:35 2018 +0200
test merge commit
의 알아보십시의 두 부모가 하는 것에 합병되었으로 현재 중 하나(아마 두 번째,하나인지 확인을 가진git 로그 222222222
),그리고 다음을 수행합 병합으로 복사하 commit 메시지 원래의 병합 commit:
$ git merge --allow-unrelated 222222222 --no-commit
Automatic merge went well; stopped before committing as requested
$ git commit -C 1234deadbeef1234deadbeef
[detached HEAD 909af09ec] test merge commit
Date: Wed Jun 6 18:04:35 2018 +0200
$ git rebase --continue
Successfully rebased and updated refs/heads/test-branch.
나는 같은 문제를 가지고 있었습니다. 문제를 원격했던 무언가가 예방이다.
내가 처음 만든 로컬 저장소. 추가라이센스
와README.md
파일을하고 최선을 다하고 있습니다.
그때 나는 원하고 원격 저장소에 세 번째로 인구가 많은 도시 중 하나습니다. 여기에 제가 실수를 확인하"초기화 이 저장소 읽어보기"를 만들어 추가 정보.md 원격지에서 너무입니다.
그래서 지금 실행하는 경우
git push --set-upstream origin master
내:
error: failed to push some refs to 'https://github.com/lokeshub/myTODs.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes
(e.g. hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
지금 이것을 극복하기 위하여 나가
git pull origin master
결과에서 아래에 오류가:
From https://github.com/lokeshub/myTODs
branch master -> FETCH_HEAD
fatal: refusing to merge unrelated histories**
I tried:
git pull origin master --allow-unrelated-histories
결과:
From https://github.com/lokeshub/myTODs
* branch master -> FETCH_HEAD
Auto-merging README.md
CONFLICT (add/add): Merge conflict in README.md
Automatic merge failed;
fix conflicts and then commit the result.
솔루션:
나는 원격 저장소 만들(나는 생각만을 제거하는파일 읽어보기
일한 수 없습니다)및 그 후 아래했:
git remote rm origin
git remote add origin https://github.com/lokeshub/myTODOs.git
git push --set-upstream origin master
내가 사용하여 리베이 몇 년 동안 나는 발생하지 않은 문제이다. 그러나,당신의 첫 번째 문제는 당신이 그것을보십시오에서 직접 원격지점개발
에서 원격 저장소라는근원
. 는 말 그대로 잘못하기 때문에,리베이 위험한 명령하는 restructeres git 역사입니다. 즉,당신은 그것은 첫 번째 시도에서 로컬 저장소 및 밀어만,그것이 당신을 위해 작동하는 경우으로 예상된다.
그래서,리베이스 내 일반적인 작업 흐름을 다음과 같습니다(하지만 제발 계속 마음에서는 사용하지 않아야 합니다 리베이스에서 지점,당신은하지만 하나 comittee. 이러한 지점,사용 단순히 병합하고 충돌을 해결하는 해당되는 경우):
master
;으로 한 줄의 명령):git 체크아웃 마스터&&git pull 마스터 원산지&&git 체크아웃 개발
git push-f 원 개발
이미 언급하고 있음을 염두에 두어야 리베이스를 조작하 git 역사,일반적으로 나쁜 것은 아니다. 그러나,그's 않는 것이 가능하다에서 가지는 아무도 투. 유지하기 위해서는 지점을 풀 수 있는 다른 개발자가 사용하는 또 다른 병합 전략을 같이 병합체,스쿼시 또는 cherrypick. 그래서 다른 말로:리베이어야'nt 의 도구로 개발. 그것은에 대한 잘 작동하는 경우,당신은 일하는 사람이 있습니다.
우리가 사용하는 기능 지 strategey. 이에,나는 일반적으로 사용하여 리베이스를 얻기 위해서"업데이트 및"에서 다른 개발자,에서 일어난 그 사이에서입니다. 그렇게 하면,그것의 크기를 줄 커밋에서 볼 수 있는 풀 요청을 합니다. 따라서,그것은 그것을 쉽게 코드토 내에서 변경 이 기능을 지점에 있습니다.