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 de Git es 2.9.0. Solía funcionar bien en la versión anterior.
¿Cómo puedo continuar con este cambio de base permitiendo historias no relacionadas con la bandera forzada introducida en la nueva versión?
El comportamiento predeterminado ha cambiado desde Git 2.9:
"git merge" utilizado para permitir la fusión de dos ramas que no tienen una base común de forma predeterminada, lo que llevó a un nuevo historial de un proyecto existente creado y luego fue retirado por un mantenedor desprevenido, lo que permitió un historial paralelo innecesario combinado con el proyecto existente . Se le ha enseñado al comando que no permita esto de forma predeterminada , con una
--allow-unrelated-histories
opción de trampilla de escape que se utilizará en un evento poco común que fusiona las historias de dos proyectos que comenzaron sus vidas de forma independiente.
Consulte el registro de cambios de la versión de Git para obtener más información.
Puede utilizar --allow-unrelated-histories
para forzar la fusión.
En mi caso, el error se produjo fatal: refusing to merge unrelated histories
en cada intento, especialmente en la primera solicitud de extracción después de agregar de forma remota un repositorio de Git.
El uso de la --allow-unrelated-histories
bandera funcionó con una solicitud de extracción de esta manera:
git pull origin branchname --allow-unrelated-histories
Prueba el siguiente comando:
git pull origin master --allow-unrelated-histories
Esto debería solucionar tu problema.
Recibí este error cuando configuré un repositorio local primero. Luego fui a GitHub y creé un nuevo repositorio. Entonces corrí
git remote add origin <repository url>
Cuando intenté empujar o tirar, obtuve el mismo fatal: unrelated_histories
error cada vez.
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
Para esto, ingrese el comando:
git pull origin branchname --allow-unrelated-histories
Por ejemplo,
git pull origin master --allow-unrelated-histories
Referencia:
git pull origin <branch> --allow-unrelated-histories
Será dirigido a una ventana de edición de Vim:
git push --set-upstream origin <branch>
Yo tuve el mismo problema. Prueba esto:
git pull origin master --allow-unrelated-histories
git push origin master
Tratar git pull --rebase development
Para Android Studio e IntelliJ:
Primero, comete todo y resuelva cualquier conflicto.
Luego abra la terminal desde abajo de IDE e ingrese:
git pull origin master --allow-unrelated-histories
Ahora puedes empujar.
Ejecuté este comando y el problema se resolvió. 1
git pull origin branchName --allow-unrelated-histories
Dos posibilidades cuando esto puede suceder:
Ha clonado un proyecto y, de alguna manera, el directorio .git se eliminó o se corrompió. Esto hace que Git no conozca su historial local y, por lo tanto, generará este error cuando intente presionar o extraer del repositorio remoto.
Ha creado un nuevo repositorio, le ha agregado algunas confirmaciones y ahora está intentando extraer de un repositorio remoto que ya tiene algunas confirmaciones propias. Git también arrojará el error en este caso, ya que no tiene idea de cómo se relacionan los dos proyectos.
SOLUCIÓN
git pull origin master --allow-unrelated-history
Ref: https://www.educative.io/edpresso/the-fatal-refusing-to-merge-unrelated-histories-git-error
ADVERTENCIA ESTO POTENCIALMENTE SOBRESCRIBIRÁ EL REPOSITORIO REMOTO
Esto funcionó para mí:
git push origin master --force
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.
Entonces obtienes tu error al hacer git rebase
:
$ git rebase origin/development
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
Este error en realidad no cancela el rebase, pero ahora está en medio de él:
$ git status
interactive rebase in progress; onto 4321beefdead
Last command done (1 command done):
pick 1234deadbeef1234deadbeef test merge commit
Entonces ahora puede hacer la fusión a mano. Descubra las confirmaciones principales 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 fusión 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 fusión original:
$ 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.
Yo tuve el mismo problema. El problema es remoto tenía algo que lo impedía.
Primero creé un repositorio local. Agregué un archivo LICENSE
y README.md
a mi archivo local y comprometido.
Luego quería un repositorio remoto, así que creé uno en GitHub. Aquí cometí un error al marcar "Inicializar este repositorio con un README" , lo que creó un README.md en remoto también.
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 lo hice
git pull origin master
Lo que resultó en el siguiente error:
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:
Eliminé el repositorio remoto y creé uno nuevo (creo que solo eliminar el archivo README
podría haber funcionado) y luego funcionó lo siguiente:
git remote rm origin
git remote add origin https://github.com/lokeshub/myTODOs.git
git push --set-upstream origin master
Esto suele suceder cuando se compromete por primera vez en un repositorio remoto. Como el error dice claramente "negarse a fusionar historias no relacionadas", debemos usar la marca --allow-unrelated-historiales.
git pull origin master --allow-unrelated-histories
Ahora habría algunos conflictos que tendremos que resolver manualmente. Después de eso, simplemente confirme el código y empújelo.
Primero, extraiga los cambios remotos a su local usando el siguiente comando:
git pull origin branchname --allow-unrelated-histories
** branchname es maestro en mi caso.
Cuando finaliza el comando de extracción, se produce un conflicto. Deberías resolver los conflictos. Utilizo Android Studio para resolver conflictos.
Cuando se resuelven los conflictos, ¡la fusión está lista!
Ahora puedes empujar con seguridad.
También luché con esto, 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 la rebase:
git cherry-pick -m 1 1234deadbeef1234deadbeef
git rebase --continue
Intenté git pull --allow-unrelated-histories
no funcionó, pero lo que me resuelve este problema fue:
Copié todos los archivos de mi repositorio de escritorio en otra carpeta y luego eliminé la carpeta.
Luego clono el repositorio nuevamente porque es un proyecto nuevo.
Cuando copié mis archivos de nuevo y presioné, funcionó a la perfección.
Al hacer una git pull
, recibí este mensaje fatal: refusing to merge unrelated histories
para un módulo de repositorio en el que no había actualizado la copia local durante un tiempo.
Ejecuté este comando solo para actualizar local desde el origen. Solo quería lo último del control remoto y no necesitaba ningún cambio local.
git reset --hard origin/master
Esto lo solucionó en mi caso.
Para los empleados de Google:
Si creó un nuevo repositorio en GitHub y lo inicializó accidentalmente con archivos README
o .gitignore
.
Si no puede fusionar o reajustar porque la .git
carpeta está dañada.
Entonces:
git clone
Ahora lo local y lo remoto tendrán "historias relacionadas" y se fusionarán o volverán a fusionarse felizmente.
Utilizo la rebase durante años y nunca me había encontrado con tal problema. Sin embargo, su primer problema es que intenta hacerlo directamente en la rama remota development
desde el repositorio remoto, llamado origin
. Eso es literalmente incorrecto porque rebase es un comando peligroso, que reestructura el historial de git. Habiendo dicho eso, primero debe probar en su repositorio local y empujarlo solo, si funciona para usted como se esperaba.
Por lo tanto, mi flujo de trabajo de rebase habitual se parece a lo siguiente (pero tenga en cuenta que no debe usar rebase en las ramas, que no es el único comité. Para tales ramas, use simplemente fusionar y resolver conflictos, si corresponde):
master
; como un comando de una línea):git checkout master && git pull origin master && git checkout development
git rebase master
git push -f origin development
Como ya mencioné, tenga en cuenta que la rebase manipula el historial de git, que suele ser algo malo. Sin embargo, es posible hacer eso en las sucursales, donde nadie más se compromete. Para mantener la rama extraíble para los otros desarrolladores, use otra estrategia de fusión como fusionarse, aplastar o seleccionar. Entonces, en otras palabras: Rebase no debería ser su herramienta de desarrollo distribuido. Funciona bien para usted si es el único que trabaja en este repositorio.
Usamos la estrategia de rama de características. En esto, usualmente uso rebase para obtener las "actualizaciones" de los otros desarrolladores, que sucedieron mientras tanto en la rama maestra. Al hacerlo, reduce el tamaño de las confirmaciones que son visibles en una solicitud de extracción. Por lo tanto, al revisor de código le resulta más fácil ver mis cambios realizados en esta rama de funciones.
Veo que la respuesta más votada no resuelve esta pregunta, que se encuentra en el contexto del rebase.
La única forma de sincronizar las dos ramas divergentes es fusionarlas de nuevo, lo que da como resultado una confirmación de fusión adicional y dos conjuntos de confirmaciones que contienen los mismos cambios (los originales y los de su rama rebasada). No hace falta decir que esta es una situación muy confusa.
Entonces, antes de correr git rebase
, pregúntese siempre: "¿Alguien más está mirando esta rama?" Si la respuesta es sí, quite las manos del teclado y comience a pensar en una forma no destructiva de hacer sus cambios (por ejemplo, el git revert
comando). De lo contrario, puede volver a escribir el historial todo lo que quiera.
Referencia: https://www.atlassian.com/git/tutorials/merging-vs-rebasing#the-golden-rule-of-rebasing
La estrella de HGTV, Christina Hall, revela que le diagnosticaron envenenamiento por mercurio y plomo, probablemente debido a su trabajo como manipuladora de casas.
Recientemente salió a la luz un informe policial que acusa a la estrella de 'Love Is Blind', Brennon, de violencia doméstica. Ahora, Brennon ha respondido a los reclamos.
Conozca cómo Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia mientras organizaba la primera celebración de Acción de Gracias desde que murió su madre, Naomi Judd.
Descubra por qué un destacado experto en lenguaje corporal cree que es fácil trazar "tales paralelismos" entre la princesa Kate Middleton y la princesa Diana.
Los inodoros arrojan columnas de aerosol invisibles con cada descarga. ¿Como sabemos? La prueba fue capturada por láseres de alta potencia.
Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?
The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!
¿Sigue siendo efectivo ese lote de repelente de insectos que te quedó del verano pasado? Si es así, ¿por cuánto tiempo?
¿Quiere probar un cepillo de dientes Sonicare sin gastar mucho dinero en uno de sus modelos favoritos de gama alta? Puede comprar un kit de la Serie 2 o Serie 3 por tan solo $ 30 hoy en Amazon. Haga clic aquí para ver la lista completa de modelos elegibles y tenga en cuenta que se descontarán $ 10 adicionales en su carrito.
Tapas elásticas de silicona de Tomorrow's Kitchen, paquete de 12 | $14 | Amazonas | Código promocional 20OFFKINJALids son básicamente los calcetines de la cocina; siempre perdiéndose, dejando contenedores huérfanos que nunca podrán volver a cerrarse. Pero, ¿y si sus tapas pudieran estirarse y adaptarse a todos los recipientes, ollas, sartenes e incluso frutas en rodajas grandes que sobran? Nunca más tendrás que preocuparte por perder esa tapa tan específica.
Hemos pirateado algunas ciudades industriales en esta columna, como Los Ángeles y Las Vegas. Ahora es el momento de una ciudad militar-industrial-compleja.
Un minorista está enlatando su sección de tallas grandes. Pero no están tomando la categoría solo en línea o descontinuándola por completo.
El equipo está a la espera de las medallas que ganó en los Juegos Olímpicos de Invierno de 2022 en Beijing, ya que se está resolviendo un caso de dopaje que involucra a la patinadora artística rusa Kamila Valieva.
Miles de compradores de Amazon recomiendan la funda de almohada de seda Mulberry, y está a la venta en este momento. La funda de almohada de seda viene en varios colores y ayuda a mantener el cabello suave y la piel clara. Compre las fundas de almohada de seda mientras tienen hasta un 46 por ciento de descuento en Amazon
El jueves se presentó una denuncia de delito menor amenazante agravado contra Joe Mixon.
El Departamento de Policía de Lafayette comenzó a investigar a un profesor de la Universidad de Purdue en diciembre después de recibir varias denuncias de un "hombre sospechoso que se acercaba a una mujer".
Al igual que el mundo que nos rodea, el lenguaje siempre está cambiando. Mientras que en eras anteriores los cambios en el idioma ocurrían durante años o incluso décadas, ahora pueden ocurrir en cuestión de días o incluso horas.
Estoy de vuelta por primera vez en seis años. No puedo decirte cuánto tiempo he estado esperando esto.
“And a river went out of Eden to water the garden, and from thence it was parted and became into four heads” Genesis 2:10. ? The heart is located in the middle of the thoracic cavity, pointing eastward.
Creo, un poco tarde en la vida, en dar oportunidades a la gente. Generosamente.