it-swarm-es.com

Git se niega a fusionar historias no relacionadas en rebase

Durante git rebase Origin/development, el siguiente mensaje de error se muestra desde git:

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

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

¿Cómo puedo continuar con esta rebase permitiendo las historias no relacionadas con la marca forzada introducida en la nueva versión?

1566
Shubham Chaudhary

El comportamiento predeterminado ha cambiado desde git 2.9:

"git merge" utilizado para permitir la fusión de dos sucursales que no tienen una base común de forma predeterminada, lo que dio lugar a una historia completamente nueva de un proyecto existente creado y luego a un tirador incauto, lo que permitió una historia paralela innecesaria fusionada en el proyecto existente . Se ha enseñado el comando no permitir esto por defecto , con una opción de escape hatch --allow-unrelated-histories para ser usada en un evento raro que combina historias de dos proyectos que comenzaron sus vidas de forma independiente.

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

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

2023
blue112

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

Usando el indicador --allow-unrelated-histories trabajado con la solicitud de extracción de esta manera:

git pull Origin branchname --allow-unrelated-histories

854
adi

Prueba el siguiente comando

git pull Origin master --allow-unrelated-histories

esto debería solucionar tu problema.

491
Ogbonna Vitalis

Recibí este error cuando configuro un repositorio local primero. Luego fue a github y creó un nuevo repositorio. Entonces corri

git remote add Origin <repository url>

Cuando intenté presionar/tirar, obtuve el mismo error fatal: unrelated_histories. 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
202
Adithya Bhat

Para esto, ingrese el comando:

git pull Origin branchname --allow-unrelated-histories

p.ej.:

git pull Origin master --allow-unrelated-histories

Referencia:

Github no relacionados con el tema de las historias

126
VIKAS KOHLI

Tuve el mismo problema Prueba esto:

git pull Origin master --allow-unrelated-histories 

git Push Origin master
89
Aamir Kalimi

Prueba git pull --rebase development

38
Daniel petrov

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

Entonces obtienes tu error haciendo git rebase:

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

Este error no cancela realmente 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

Así que ahora puedes hacer la fusión a mano. Averigüe las confirmaciones de los padres de la confirmación de fusión original:

$ 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 de combinación es el que se fusionó con el actual (probablemente el segundo, verifique con git log 222222222), y luego haga la combinación a mano, copiando el mensaje de confirmación de la combinación original de confirmació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.
28
cdauth
git pull Origin <branch> --allow-unrelated-histories

Serás dirigido a un Vim Edit

  • Insertar mensaje de confirmación
  • Luego presiona Ctrl + X para salir de VIM
  • git Push --set-upstream Origin <branch>
23
Las Lemieux

Yo tuve el mismo problema. El problema es remoto tenía algo que previene esto. Primero creé un repositorio local. Agregué una LICENCIA y README.md a mi local y cometer. Luego quise un repositorio remoto, así que creé uno en Github. Aquí cometí un error al marcar "Inicializar este repositorio con un archivo README" , que también creó un archivo README.md en el control remoto.

Así que ahora cuando corrí

git Push --set-upstream Origin master

Tengo:

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.

Ahora para superar esto hice.

git pull Origin master

Lo que resultó en error por debajo

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

Lo intenté:

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.

Solución:
Quité el repositorio remoto y creé que era nuevo (creo que solo quitando README podría haber funcionado) y después de eso funcionó

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

Luché con esto también, pero me las arreglé para encontrar una solución.

Cuando se encuentre con el error anterior, simplemente seleccione la confirmación de fusión y luego continúe con la rebase:

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

Esto funcionó para mí:

git Push Origin master --force
0
Aniket Patil