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