Pendant git rebase origin/development
le message d'erreur suivant est affiché depuis Git:
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
Ma version Git est 2.9.0. Il fonctionnait bien dans la version précédente.
Comment puis-je continuer ce rebase en autorisant les historiques sans rapport avec le drapeau forcé introduit dans la nouvelle version?
git-rebase
situation tandis que la réponse donne un drapeau pourgit-merge
git pull [repo URL]
au lieu degit clone [repo URL]
Réponses:
Le comportement par défaut a changé depuis Git 2.9:
Voir le journal des modifications de Git pour plus d'informations.
Vous pouvez utiliser
--allow-unrelated-histories
pour forcer la fusion à se produire.la source
--allow-unrelated-histories
permanence?git pull
aussi avec . Était dans cet "événement rare qui fusionne les histoires de deux projets qui ont commencé leur vie indépendamment".git --work-tree="." pull --allow-unrelated-histories
Dans mon cas, l'erreur était juste
fatal: refusing to merge unrelated histories
à chaque essai, en particulier la première demande d'extraction après avoir ajouté à distance un référentiel Git.L'utilisation du
--allow-unrelated-histories
drapeau a fonctionné avec une demande de tirage de cette manière:la source
git clone
.Essayez la commande suivante:
Cela devrait résoudre votre problème.
la source
J'ai eu cette erreur lorsque j'ai d'abord configuré un référentiel local. Ensuite, je suis allé sur GitHub et j'ai créé un nouveau référentiel. Puis j'ai couru
Quand j'ai essayé de pousser ou de tirer, j'ai toujours eu la même
fatal: unrelated_histories
erreur.Voici comment je l'ai corrigé:
la source
.git
dossier, a courugit init
et a fait ce qu'Adithya a dit, à l'exception de la partie de fusion.Pour cela, entrez la commande:
Par exemple,
Référence:
Problème d'histoires non liées à GitHub
la source
Vous serez dirigé vers une fenêtre d'édition de Vim:
git push --set-upstream origin <branch>
la source
:x<Enter>
seraJ'ai eu le même problème. Essaye ça:
la source
Essayer
git pull --rebase development
la source
git pull --rebase=preserve --allow-unrelated-histories development
newOrigin branch
plutôt quedevelopment
) a ajouté la validation initiale au sommet de ma branche locale, supprimant ainsi pratiquement tout de celle-ci. Je voulais que le commit initial de la nouvelle télécommande soit en bas.Pour Android Studio et IntelliJ:
Commencez par vous engager tout et résolvez les conflits.
Ouvrez ensuite le terminal par le bas d'IDE et entrez:
Vous pouvez maintenant pousser.
la source
AVERTISSEMENT, CELA ÉCRASERA POTENTIELLEMENT LE DÉPOSITAIRE À DISTANCE
Cela a fonctionné pour moi:
la source
Étant donné que toutes les autres réponses ne répondent pas réellement à la question, voici une solution inspirée de cette réponse sur une question connexe.
Vous obtenez donc votre erreur en faisant
git rebase
:Cette erreur n'annule pas réellement le rebase, mais vous êtes maintenant au milieu:
Vous pouvez donc maintenant faire la fusion à la main. Découvrez les validations parentes du commit de fusion d'origine:
Découvrez lequel des deux parents de fusion est celui qui a été fusionné dans celui actuel (probablement le second, vérifiez avec
git log 222222222
), puis effectuez la fusion à la main, en copiant le message de validation du commit de fusion d'origine:la source
J'ai eu le même problème. Le problème est que la télécommande avait quelque chose qui l'empêchait.
J'ai d'abord créé un référentiel local. J'ai ajouté un
LICENSE
etREADME.md
dossier à mon local et engagé.Ensuite, je voulais un référentiel distant alors j'en ai créé un sur GitHub. Ici, j'ai fait une erreur en cochant "Initialiser ce référentiel avec un fichier README" , ce qui a également créé un fichier README.md à distance.
Alors maintenant, quand j'ai couru
J'ai eu:
Maintenant, pour surmonter cela, je l'ai fait
Ce qui a entraîné l'erreur ci-dessous:
J'ai essayé:
Résultat:
Solution:
J'ai supprimé le référentiel distant et créé un nouveau (je pense que seule la suppression du fichier
README
aurait pu fonctionner) et après cela, le ci-dessous a fonctionné:la source
git push --force ...
serait une solution appropriée à l'étape 1 dans ce cas particulierCela se produit généralement lorsque vous vous engagez pour la première fois dans un référentiel distant. Comme l'erreur indique clairement "refus de fusionner des histoires non liées", nous devons utiliser l'indicateur --allow-unrelated-histories.
Il y aurait maintenant des conflits que nous devons résoudre manuellement. Après cela, validez simplement le code et poussez-le.
la source
--allow-unrelated-histories
drapeau.Deux possibilités lorsque cela peut se produire -
Vous avez cloné un projet et, d'une manière ou d'une autre, le répertoire .git a été supprimé ou corrompu. Cela amène Git à ignorer votre historique local et, par conséquent, le fera lever cette erreur lorsque vous essayez de pousser ou de tirer du référentiel distant.
Vous avez créé un nouveau référentiel, y avez ajouté quelques validations, et maintenant vous essayez de tirer à partir d'un référentiel distant qui a déjà ses propres validations. Git lancera également l'erreur dans ce cas, car il n'a aucune idée de la façon dont les deux projets sont liés.
SOLUTION
git pull origin master --allow-unrelated-histories
Réf - https://www.educative.io/edpresso/the-fatal-refusing-to-merge-unrelated-histories-git-error
la source
J'ai également eu du mal avec cela, mais j'ai réussi à trouver une solution.
Lorsque vous rencontrez l'erreur ci-dessus, choisissez simplement le commit de fusion et continuez la rebase:
la source
Commencez par extraire les modifications à distance de votre section locale à l'aide de la commande suivante:
** le nom de la branche est maître dans mon cas.
Lorsque la commande Pull est terminée, un conflit se produit. Vous devez résoudre les conflits. J'utilise Android Studio pour résoudre des conflits.
Lorsque les conflits sont résolus, la fusion est terminée!
Vous pouvez maintenant pousser en toute sécurité.
la source
Resolve Conflict
dans AS. Parfois, le popup / ballon en bas à droite disparaît et je ne peux rien faire. Merci @oiyioJe viens de faire un
la source
En faisant un
git pull
, j'ai reçu ce messagefatal: refusing to merge unrelated histories
pour un module de dépôt où je n'avais pas mis à jour la copie locale depuis un moment.J'ai exécuté cette commande juste pour rafraîchir le local à partir de l'origine. Je voulais juste la dernière version de la télécommande et je n'avais pas besoin de changements locaux.
Cela l'a corrigé dans mon cas.
la source
A lire avec le lien ci-dessous, ça fonctionne pour moi (sans utiliser le
--allow-unrelated-histories
drapeau)https://stackoverflow.com/a/39783462/4324288
la source
J'utilise le rebase depuis des années et je n'avais jamais rencontré un tel problème. Cependant, votre premier problème est que vous essayez de le faire directement sur la branche distante à
development
partir du référentiel distant, appeléorigin
. C'est littéralement faux parce que rebaser est une commande dangereuse, qui restructure l'historique git. Cela dit, vous devez d'abord essayer votre référentiel local et le pousser uniquement, si cela fonctionne pour vous comme prévu.Ainsi, mon flux de travail de rebase habituel ressemble à ce qui suit (mais veuillez garder à l'esprit que vous ne devez pas utiliser rebase sur les branches, ce que vous n'êtes pas le seul comité. Pour ces branches, utilisez simplement fusionner et résoudre les conflits, le cas échéant):
master
; en tant que commande sur une ligne):git checkout master && git pull origin master && git checkout development
git rebase master
git push -f origin development
Comme je l'ai déjà mentionné, gardez à l'esprit que le rebase manipule l'histoire de Git, c'est généralement une mauvaise chose. Cependant, il est possible de le faire sur les succursales, où personne d'autre ne s'engage. Afin de garder la branche extractible pour les autres développeurs, utilisez une autre stratégie de fusion comme fusionner elle-même, squash ou cherrypick. Donc, en d'autres termes: Rebase ne devrait pas être votre outil de développement distribué. Cela fonctionne bien pour vous si vous êtes le seul à travailler sur ce référentiel.
Nous utilisons la stratégie de branche de fonctionnalité. En cela, j'utilise habituellement rebase afin d'obtenir les "mises à jour" des autres développeurs, ce qui s'est produit entre-temps sur la branche master. Ce faisant, il réduit la taille des validations visibles dans une demande d'extraction. Par conséquent, il est plus facile pour le réviseur de code de voir mes modifications apportées dans cette branche de fonctionnalité.
la source