Pregunta Git se niega a fusionar historias no relacionadas en rebase


Durante git rebase origin/development El siguiente mensaje de error se muestra en git:

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

Mi versión de git es 2.9.0. Solía ​​funcionar bien en la versión anterior.

¿Cómo puedo continuar esta rebase permitiendo historias sin relación con la bandera forzada introducida en la nueva versión?


987
2018-06-21 07:23


origen


Respuestas:


El comportamiento predeterminado ha cambiado desde git 2.9:

"git merge" usado para permitir la fusión de dos ramas que no tienen común      base por defecto, lo que condujo a una nueva historia de una existente      proyecto creado y luego ser arrastrado por un mantenedor desprevenido,      lo que permitió una historia paralela innecesaria fusionada en el      proyecto existente. El comando ha sido enseñado no permitir esto por      defecto, con una escotilla de escape --allow-unrelated-histories opción      para ser utilizado en un evento raro que combina historias de dos proyectos      que comenzó sus vidas de forma independiente.

Ver el git release changelog para más información.

Puedes usar --allow-unrelated-histories para forzar la fusión a suceder.


1335
2018-06-21 07:26



En mi caso, el error fue solo fatal: refusing to merge unrelated histories en cada solicitud de extracción especialmente después de agregar de forma remota un repositorio git.

Utilizando --allow-unrelated-histories indicador trabajado con solicitud de extracción de esta manera:

git pull origin branchname --allow-unrelated-histories


547
2017-10-18 12:13



Prueba el siguiente comando

git pull origin master --allow-unrelated-histories

Esto debería solucionar tu problema.


292
2017-11-20 16:41



Obtuve este error cuando configuro un repositorio local primero. Luego fui a github y creé un nuevo repositorio. Entonces corrí

git remote add origin <repository url>

Cuando traté de empujar / tirar, obtuve el mismo fatal: unrelated_histories error. Así es como lo arreglé:

git pull origin master --allow-unrelated-histories
git merge origin origin/master
... add and commit here...
git push origin master

160
2018-06-08 17:41



Tratar git pull --rebase development


32
2018-01-20 14:05



Luché con esto también, pero logré encontrar una solución alternativa.

Cuando te encuentres con el error anterior, simplemente selecciona la confirmación de fusión y luego continúa la rebase:

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

6
2017-08-30 15:20



Dado que todas las demás respuestas no responden realmente a la pregunta, aquí hay una solución inspirada en esta respuesta en una pregunta relacionada.

Así que obtienes tu error haciendo git rebase:

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

Este error en realidad no cancela la rebase, pero ahora estás en el medio:

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

Entonces ahora puedes hacer la fusión a mano. Averigüe los commits principales de la confirmación original de fusión:

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

    test merge commit

Averigüe cuál de los dos padres fusionados es el que se fusionó con el actual (probablemente el segundo, verifique con git log 222222222), y luego realice la fusión a mano, copiando el mensaje de confirmación de la confirmación original de fusión:

$ 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.

4
2018-06-22 09:04