리베이스에서 관련 없는 히스토리 병합을 거부하는 Git

'깃 리베이스 오리진/개발' 중에 Git에서 다음과 같은 오류 메시지가 표시됩니다:

fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef

내 Git 버전은 2.9.0입니다. 이전 버전에서는 정상적으로 작동했습니다.

새 릴리스에 도입된 강제 플래그를 사용하여 관련 없는 히스토리를 허용하는 이 리베이스를 계속 사용하려면 어떻게 해야 하나요?

질문에 대한 의견 (7)

기본 동작은 Git 2.9부터 변경되었습니다:

공통 기반이 없는 두 브랜치를 병합하는 데 사용되는 가 기본적으로 기본적으로 공통점이 없는 두 브랜치를 병합할 수 있도록 하는 데 사용되며, 이로 인해 기존 프로젝트의 새로운 히스토리가 프로젝트의 새로운 히스토리를 생성한 다음 의심하지 않는 관리자가 가져올 수 있습니다, 불필요한 병렬 히스토리를 기존 프로젝트에 병합할 수 있었습니다. 기존 프로젝트. 이 명령은 기본적으로 이 작업을 허용하지 않도록 기본값으로 설정되어 있으며, 드문 경우에만 사용할 수 있도록 이스케이프 해치 --allow-unrelated-histories 옵션을 이 옵션은 독립적으로 시작된 두 프로젝트의 히스토리를 병합하는 드문 경우에만 병합하는 드문 경우에 사용할 수 있습니다.

자세한 내용은 Git 릴리스 변경 로그를 참조하세요.

허용하지 않는 히스토리는 --allow-unrelated-histories를 사용하여 병합을 강제로 수행할 수 있다.

해설 (6)

제 경우에는 모든 시도, 특히 원격으로 Git 저장소를 추가한 후 첫 번째 풀 리퀘스트에서 '치명적: 관련 없는 히스토리 병합 거부'라는 오류가 발생했습니다.

이런 식으로 풀 리퀘스트에 --allow-unrelated-histories 플래그를 사용하면 효과가 있었습니다:

git pull origin branchname --allow-unrelated-histories
해설 (10)

하려고 다음과 같은 명령을 실행합니다:

git pull origin master --allow-unrelated-histories

이 문제를 해결합니다.

해설 (0)

이러할 때 나는 설정의 로컬 저장소에 처음이다. 다음 갔을 GitHub 고 새로운 생성합니다. 가

git remote add origin 

가를 밀어/잡아당기기에,나는 같은 치명적인:unrelated_histories`오류가 있습니다.

여기에 내가 어떻게 고정된다:

git pull origin master --allow-unrelated-histories
git merge origin origin/master
... add and commit here...
git push origin master
해설 (5)

이를 위해 다음 명령을 입력하십시오:

git pull origin branchname --allow-unrelated-histories

예를 들어,

git pull origin master --allow-unrelated-histories

참고:

GitHub 관련이 없는 역사 문제점

해설 (1)
git pull origin  --allow-unrelated-histories

하시지 않겠습니까 Vim 편집 창:

-삽입 commit 메시지 -누릅Esc(을 종료&quot 하려면"모드) 다음:(결장),다음x(small"x") 마지막으로 칠Enter얻을 수 Vim -git push 정-업스트림 원산지<점>

해설 (2)

나는 같은 문제를 가지고 있었습니다. 이것을 보십시오:

git pull origin master --allow-unrelated-histories 

git push origin master
해설 (0)

git pull--리베이스 개발

해설 (3)

경고 이것은 잠재적으로 덮어쓰 원격 저장소의

이것은 나를 위해 일했:

git push origin master --force
해설 (8)

이후 모든 다른 대답은 실제로는지에 대한 질문에 대답하는 솔루션은 여기에에서 영감을[이 대답](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.
해설 (0)

나는 같은 문제를 가지고 있었습니다. 문제를 원격했던 무언가가 예방이다.

내가 처음 만든 로컬 저장소. 추가라이센스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
해설 (4)

이것은 일반적으로 발생에 투입할 때 첫 번째 시간을 원격 저장소에 있습니다. 로 오류 분명히 말하기를"부 병합하는 관련이 없는 역사",우리가 필요한 사용할 수 없는-기록 국기입니다.

git pull origin master  --allow-unrelated-histories

이제할 수 있습니다.충돌 우리가 해결해야 할 수 있습니다. 그 후 그냥 commit 코드를 푸시하시면 됩니다.

해설 (1)

저도 이 문제로 어려움을 겪었지만 해결 방법을 찾았습니다.

위와 같은 오류가 발생하면 병합 커밋을 선택한 다음 리베이스를 계속 진행하세요:

git cherry-pick -m 1 1234deadbeef1234deadbeef
git rebase --continue
해설 (1)

내가 사용하여 리베이 몇 년 동안 나는 발생하지 않은 문제이다. 그러나,당신의 첫 번째 문제는 당신이 그것을보십시오에서 직접 원격지점개발에서 원격 저장소라는근원. 는 말 그대로 잘못하기 때문에,리베이 위험한 명령하는 restructeres git 역사입니다. 즉,당신은 그것은 첫 번째 시도에서 로컬 저장소 및 밀어만,그것이 당신을 위해 작동하는 경우으로 예상된다.

그래서,리베이스 내 일반적인 작업 흐름을 다음과 같습니다(하지만 제발 계속 마음에서는 사용하지 않아야 합니다 리베이스에서 지점,당신은하지만 하나 comittee. 이러한 지점,사용 단순히 병합하고 충돌을 해결하는 해당되는 경우):

  1. 있는지를 확인하고 깨끗한 작업 나무(아 uncommit 변경)
  2. 체크아웃 지점하려는 리베에(예를 들어,당's say it'smaster;으로 한 줄의 명령):git 체크아웃 마스터&&git pull 마스터 원산지&&git 체크아웃 개발
  3. 하 acutal 리베:`git 은 리베이터
  4. 경's 완료되고 모든 작품으로 예상되는 푸시하여 원격입니다. 그렇게하는,당신은 그것을 강하기 때문에,원격 호스트 이미 있는 역사에서 또 다른 순서로 원격을 것이 답이 아니다. 그래서,우리는 우리가 말할 필요가"나의 로컬 버전의 역사가 올바른 모든 것을 덮어쓰에는 원격 지점 사용하여 로컬 버전의 역사를":git push-f 원 개발

이미 언급하고 있음을 염두에 두어야 리베이스를 조작하 git 역사,일반적으로 나쁜 것은 아니다. 그러나,그's 않는 것이 가능하다에서 가지는 아무도 투. 유지하기 위해서는 지점을 풀 수 있는 다른 개발자가 사용하는 또 다른 병합 전략을 같이 병합체,스쿼시 또는 cherrypick. 그래서 다른 말로:리베이어야'nt 의 도구로 개발. 그것은에 대한 잘 작동하는 경우,당신은 일하는 사람이 있습니다.

우리가 사용하는 기능 지 strategey. 이에,나는 일반적으로 사용하여 리베이스를 얻기 위해서"업데이트 및"에서 다른 개발자,에서 일어난 그 사이에서입니다. 그렇게 하면,그것의 크기를 줄 커밋에서 볼 수 있는 풀 요청을 합니다. 따라서,그것은 그것을 쉽게 코드토 내에서 변경 이 기능을 지점에 있습니다.

해설 (1)