ti-enxame.com

Git recusando-se a mesclar

Durante git rebase Origin/development, a seguinte mensagem de erro é mostrada no git:

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

Minha versão do git é 2.9.0. Usado para funcionar bem na versão anterior.

Como posso continuar esse rebase, permitindo histórias não relacionadas com a bandeira forçada introduzida na nova versão?

1566
Shubham Chaudhary

O comportamento padrão mudou desde o git 2.9:

"git merge" usado para permitir mesclar duas ramificações que não têm base comum por padrão, o que levou a um novo histórico de um projeto existente criado e depois puxado por um mantenedor desavisado, que permitiu um histórico paralelo desnecessário fundido no projeto existente . O comando foi ensinado não permitir isso por padrão , com uma opção de escape hatch --allow-unrelated-histories para ser usada em um evento raro que mescla histórias de dois projetos que iniciaram suas vidas independentemente.

Veja o changelog de git release para mais informações.

Você pode usar --allow-unrelated-histories para forçar a mesclagem a acontecer.

2023
blue112

No meu caso, o erro era apenas fatal: refusing to merge unrelated histories em cada solicitação de pull, especialmente depois de adicionar remotamente um repositório git.

A utilização do sinalizador --allow-unrelated-histories funcionou com o pull request desta forma:

git pull Origin branchname --allow-unrelated-histories

854
adi

Tente o seguinte comando

git pull Origin master --allow-unrelated-histories

isso deve resolver seu problema.

491
Ogbonna Vitalis

Eu recebi este erro quando eu configurei um repositório local primeiro. Então fui ao github e criei um novo repositório. Então eu corri

git remote add Origin <repository url>

Quando tentei empurrar/puxar, recebi o mesmo erro fatal: unrelated_histories. Aqui está como eu consertei:

git pull Origin master --allow-unrelated-histories
git merge Origin origin/master
... add and commit here...
git Push Origin master
202
Adithya Bhat

Para isso, insira o comando:

git pull Origin branchname --allow-unrelated-histories

por exemplo.:

git pull Origin master --allow-unrelated-histories

Referência:

Problema de histórias não relacionadas ao Github

126
VIKAS KOHLI

Eu tive o mesmo problema. Tente isto:

git pull Origin master --allow-unrelated-histories 

git Push Origin master
89
Aamir Kalimi

Tente git pull --rebase development

38
Daniel petrov

Uma vez que todas as outras respostas não estão realmente respondendo a pergunta, aqui está uma solução inspirada por esta resposta em uma questão relacionada.

Então você começa seu erro fazendo rebase git:

$ git rebase Origin/development
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef

Este erro não cancela realmente o rebase, mas você está agora no meio dele:

$ git status
interactive rebase in progress; onto 4321beefdead
Last command done (1 command done):
   pick 1234deadbeef1234deadbeef test merge commit

Então você pode agora fazer a mesclagem à mão. Descubra os commits pai do commit original da merge:

$ git log -1 1234deadbeef1234deadbeef
commit 1234deadbeef1234deadbeef
Merge: 111111111 222222222
Author: Hans Dampf
Date:   Wed Jun 6 18:04:35 2018 +0200

    test merge commit

Descubra qual dos dois pais de mesclagem é aquele que foi mesclado no atual (provavelmente o segundo, verifique com git log 222222222), e então faça a mesclagem manualmente, copiando a mensagem de commit do commit original do merge:

$ 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.
28
cdauth
git pull Origin <branch> --allow-unrelated-histories

Você será encaminhado para um Vim Edit

  • Inserir mensagem de confirmação
  • Em seguida, pressione Ctrl + X para sair do VIM
  • git Push --set-upstream Origin <branch>
23
Las Lemieux

Eu tive o mesmo problema. O problema é remoto, algo impedia isso. Eu criei primeiro um repositório local. Eu adicionei um LICENSE e README.md ao meu local e commit. Então eu queria um repositório remoto, então criei um no Github. Aqui eu cometi um erro ao verificar "Inicializar este repositório com um README" , que também criou um README.md no remote.

Então agora quando eu corri

git Push --set-upstream Origin master

Eu tenho:

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.

Agora, para superar isso eu fiz

git pull Origin master

O que resultou em erro abaixo

From https://github.com/lokeshub/myTODs
branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories**

Eu tentei:

git pull Origin master --allow-unrelated-histories

resultado:

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.

Solução:
Eu removi o repo remoto e criei o novo (acho que só remover README poderia ter funcionado) e depois disso funcionou abaixo

git remote rm Origin
git remote add Origin https://github.com/lokeshub/myTODOs.git
git Push --set-upstream Origin master
18
Lokesh Purohit

Eu lutei com isso também, mas consegui encontrar uma solução alternativa.

Quando você topar com o erro acima, apenas escolha o merge commit e continue o rebase:

git cherry-pick -m 1 1234deadbeef1234deadbeef
git rebase --continue
11
el_tigro

Isso funcionou para mim:

git Push Origin master --force
0
Aniket Patil