Git refusant de fusionner des histoires sans rapport sur rebase

Au git rebase origin/development le message d’erreur suivant s’affiche à partir de git:

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

Ma version git est 2.9.0. Utilisé pour bien fonctionner dans la version précédente.

Comment puis-je continuer cette rebase en autorisant des historiques sans rapport avec le drapeau forcé introduit dans la nouvelle version?

Le comportement par défaut a changé depuis la version 2.9:

“git merge” permet de fusionner par défaut deux twigs qui n’ont pas de base commune, ce qui conduit à un tout nouvel historique d’un projet existant créé puis est extrait par un responsable sans méfiance, ce qui permet de fusionner un historique parallèle inutile dans le projet existant . On a appris à la commande à ne pas autoriser cela par défaut , avec une option de --allow-unrelated-histories échappement --allow-unrelated-histories à utiliser dans un événement rare qui fusionne les historiques de deux projets qui ont commencé leur vie indépendamment.

Voir le changelog de la version de git pour plus d’informations.

Vous pouvez utiliser --allow-unrelated-histories pour forcer la fusion.

Dans mon cas, l’erreur était tout simplement fatal: refusing to merge unrelated histories sur chaque requête particulièrement importante après l’ajout à distance d’un repository git.

L’utilisation du --allow-unrelated-histories a fonctionné de la manière suivante:

git pull origin branchname --allow-unrelated-histories

Essayez la commande suivante

git pull origin master --allow-unrelated-histories

Cela devrait résoudre votre problème.

J’ai eu cette erreur lorsque j’ai configuré un référentiel local en premier. Puis est allé à github et a créé un nouveau repository. Puis j’ai couru

 git remote add origin  

Lorsque j’ai essayé de pousser / tirer, j’ai eu la même erreur fatal: unrelated_histories . Voici comment je l’ai corrigé:

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

Essayez le git pull --rebase development

Toutes les autres réponses ne répondant pas à la question, voici une solution inspirée de cette réponse sur une question connexe.

Donc, vous obtenez votre erreur en faisant rebit git:

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

Cette erreur n’annule pas réellement le rebase, mais vous êtes maintenant au milieu:

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

Donc, vous pouvez maintenant faire la fusion à la main. Découvrez les validations parent de la validation de fusion d’origine:

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

Découvrez lequel des deux parents de fusion est celui qui a été fusionné dans l’actuel (probablement le second, vérifiez avec git log 222222222 ), puis effectuez la fusion à la main, en copiant le message de validation de la validation de fusion d’origine:

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

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 la validation de fusion, puis continuez le rebase:

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