refusing to merge unrelated histories — Comment corriger cette erreur Git
Git refuse de combiner deux branches qui ne partagent aucun ancetre commun. Cela se produit generalement lorsque vous avez initialise un depot a la fois localement et sur GitHub. Voici comment corriger cette erreur.
Ce que cette erreur signifie
Chaque depot Git commence par un commit initial. Lorsque vous fusionnez ou faites un pull, Git recherche un ancetre commun — un commit dont les deux branches descendent. C'est ainsi que Git determine ce qui a change de chaque cote.
Lorsque Git affiche "refusing to merge unrelated histories", cela signifie que les deux branches n'ont aucun ancetre commun. Ce sont deux arbres de commits completement independants qui n'ont jamais ete connectes.
C'est une mesure de securite ajoutee dans Git 2.9. Sans elle, Git fusionnerait silencieusement deux projets non lies, ce qui n'est presque jamais ce que l'on souhaite par accident. La correction est simple : indiquer a Git que vous savez ce que vous faites avec un seul drapeau.
Pourquoi cette erreur se produit
Initialisation a la fois locale et sur GitHub
Vous avez execute git init localement et fait un commit. Puis vous avez cree un nouveau depot sur GitHub avec un README. Chacun possede son propre commit racine sans historique partage. Lorsque vous essayez de faire un git pull, Git voit deux arbres non lies.
Fusion de deux depots distincts
Parfois, vous souhaitez combiner deux projets independants en un seul. Vous ajoutez un depot comme remote de l'autre et essayez de fusionner. Comme ils ont ete crees independamment, leurs historiques n'ont aucun ancetre commun et Git refuse la fusion.
git init + remote add + pull
Un workflow courant chez les debutants : vous executez git init, ajoutez des fichiers, faites un commit, puis executez git remote add origin <url> suivi de git pull origin main. Si le depot distant a deja des commits, ils sont sans lien avec les votres.
Comment corriger
Trois approches selon votre situation : pull avec le drapeau, fusion manuelle, ou rebase.
1. Pull avec --allow-unrelated-histories
2. Fusionner et resoudre les conflits
3. Rebaser sur le distant
Comment prevenir cette erreur
Cloner d'abord, coder ensuite
Creez votre depot sur GitHub en premier (avec ou sans README), puis faites un git clone sur votre machine. Cela garantit que vos depots local et distant partagent le meme commit initial, et vous ne verrez jamais cette erreur.
Pousser avant que GitHub ajoute des fichiers
Si vous preferez commencer localement, creez le depot GitHub sans README, licence, ou .gitignore. Puis ajoutez le remote et poussez vos commits locaux. Comme le depot distant est vide, il n'y a pas d'historiques non lies en conflit.
Utiliser git clone pour les depots existants
N'executez jamais git init dans un dossier pour ensuite essayer de le connecter a un depot distant existant. Utilisez git clone <url> a la place, ce qui telecharge l'historique complet et configure le remote automatiquement.
GitQuest est conçu par Anaïs (nouvelle fenêtre), développeuse web et responsable pédagogique, spécialisée en formations tech et accessibilité numérique.
FAQ — refusing to merge unrelated histories
Maitrisez les fusions Git avec GitQuest
Pratiquez les fusions, les pulls et la resolution de conflits a travers des enquetes interactives. Fini les doutes sur les drapeaux.
Commencer a apprendre Git