Pendant git rebase Origin/development
, le message d'erreur suivant est affiché par Git:
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
Ma version de Git est 2.9.0. Cela fonctionnait bien dans la version précédente.
Comment puis-je continuer cette réorganisation en permettant des historiques sans relation avec l'indicateur forcé introduit dans la nouvelle version?
Le comportement par défaut a changé depuis Git 2.9:
"git merge" utilisé pour permettre la fusion de deux branches qui n'ont pas de base commune par défaut, ce qui a entraîné la création d'un nouvel historique d'un projet existant, qui a ensuite été extrait par un responsable peu méfiant, ce qui a permis la fusion d'un historique parallèle inutile dans le projet existant. . La commande a été enseignée à ne pas autoriser cela par défaut , avec une option de hachage d'échappement
--allow-unrelated-histories
à utiliser dans un événement rare qui fusionne des historiques. de deux projets qui ont commencé leur vie indépendamment.
Voir le changelog de version de Git pour plus d'informations.
Vous pouvez utiliser --allow-unrelated-histories
pour forcer la fusion.
Dans mon cas, l'erreur était simplement fatal: refusing to merge unrelated histories
à chaque tentative, en particulier la première demande d'extraction après l'ajout à distance d'un référentiel Git.
L'utilisation de l'indicateur --allow-unrelated-histories
a fonctionné avec une demande d'extraction 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 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
git remote add Origin <repository url>
Quand 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
Pour cela, entrez la commande:
git pull Origin branchname --allow-unrelated-histories
Par exemple,
git pull Origin master --allow-unrelated-histories
Référence:
J'ai eu le même problème. Essaye ça:
git pull Origin master --allow-unrelated-histories
git Push Origin master
git pull Origin <branch> --allow-unrelated-histories
Vous serez dirigé vers une fenêtre d'édition Vim:
git Push --set-upstream Origin <branch>
Essayez git pull --rebase development
Puisque toutes les autres réponses ne répondent pas réellement à la question, voici une solution inspirée par cette réponse sur une question connexe.
Donc, vous obtenez votre erreur en faisant git rebase
:
$ git rebase Origin/development
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
Cette erreur n'annule pas réellement la base, mais vous en ê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 commits parent du commit 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éterminez lequel des deux parents fusionnés est celui qui a été fusionné dans le parent actuel (probablement le deuxième, vérifiez avec git log 222222222
), puis effectuez la fusion à la main en copiant le message de validation de la validation 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.
Cela a fonctionné pour moi:
git Push Origin master --force
J'ai eu le même problème. Le problème est distant avait quelque chose empêchant cela.
J'ai d'abord créé un référentiel local. J'ai ajouté un fichier LICENSE
et README.md
à mon fichier local et engagé.
Ensuite, je voulais un référentiel distant alors j'en ai créé un sur GitHub. Ici, j'ai commis 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
git Push --set-upstream Origin master
J'ai eu:
error: failed to Push some refs to 'https://github.com/lokeshub/myTODs.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes
(e.g. hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git Push --help' for details.
Maintenant pour surmonter cela je l'ai fait
git pull Origin master
Ce qui a entraîné l'erreur ci-dessous:
From https://github.com/lokeshub/myTODs
branch master -> FETCH_HEAD
fatal: refusing to merge unrelated histories**
J'ai essayé:
git pull Origin master --allow-unrelated-histories
Résultat:
From https://github.com/lokeshub/myTODs
* branch master -> FETCH_HEAD
Auto-merging README.md
CONFLICT (add/add): Merge conflict in README.md
Automatic merge failed;
fix conflicts and then commit the result.
Solution:
J'ai supprimé le référentiel distant et créé un nouveau (je pense que ne supprimer que le fichier README
aurait pu fonctionner) et ensuite que la procédure ci-dessous a fonctionné:
git remote rm Origin
git remote add Origin https://github.com/lokeshub/myTODOs.git
git Push --set-upstream Origin master
J'ai également eu du mal avec cela, mais j'ai réussi à trouver une solution de contournement.
Lorsque vous rencontrez l'erreur ci-dessus, sélectionnez simplement le commit de fusion, puis continuez le rebase:
git cherry-pick -m 1 1234deadbeef1234deadbeef
git rebase --continue