Git : Comment fusionner deux historiques sans base commune

Corrigez l'erreur : refusing to merge unrelated histories de Git grâce à un simple paramètre dans votre commande git merge !

Article publié le 27/05/2024, dernière mise à jour le 27/05/2024

Si vous êtes déjà tombé sur ce genre de message d’erreur avec Git :

fatal: refusing to merge unrelated histories

C’est probablement que quelque chose n’a pas été fait correctement… Mais ce n’est pas grave !

Le problème

Cette erreur arrive souvent (mais pas exclusivement) au début d’un projet.

Par exemple, vous récupérez un projet vide depuis GitHub/GitLab/… et vous commencez directement à travailler sur une branche dev.

En parallèle, vous ajoutez un fichier (README.md par exemple) sur la branche main.

Mais au moment de faire un git merge, Git refusera de faire quoi que ce soit, car la base des deux historiques est complètement différente.

Heureusement, la solution est très simple

La solution

Pour forcer Git à fusionner les deux historiques, il vous suffira de relancer votre commande git merge avec l’option suivante : --allow-unrelated-histories

Dans le cas où certains fichiers existent dans les deux branches avec des contenus différents, alors vous devrez résoudre le conflit.

Mais une fois fait, votre fusion sera parfaitement fonctionnelle !

À savoir

Auparavant, git merge acceptait de fusionner deux historiques même lorsqu’il était différent, mais cette fonctionnalité a changé depuis la version 2.9

Voir le changelog

La commande git pull, quant à elle, passe automatiquement l’option --allow-unrelated-histories par défaut, ce qui permet de ne pas avoir ce genre de problème, notamment au début du projet.


Vous avez terminé l'article ?

Commentaires (0)

pour laisser un commentaire

Aucun commentaire pour l'instant