Git refuse de fusionner des histoires sans rapport sur rebase.

pendant git rebase origin/development le message d'erreur suivant est affiché à partir de git:

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

ma version git est 2.9.0. Utilisé pour travailler bien dans la version précédente.

Comment puis-je poursuivre ce rebase permettant des histoires sans rapport avec le drapeau forcé introduit dans la nouvelle version?

1119
demandé sur K48 2016-06-21 10:23:00

7 réponses

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 commune base par défaut, qui a conduit à une toute nouvelle histoire d'un projet créé, puis retiré par une méfiance responsable, qui a permis une histoire parallèle inutile fusionné dans le un projet existant. La commande a été enseignée de ne pas permettre ceci par par défaut , avec une trappe d'évacuation --allow-unrelated-histories option à utiliser dans un événement rare qui fusionne l'histoire de deux projets qui ont commencé leur vie de façon indépendante.

Voir la git version changelog pour plus d'informations.

vous pouvez utiliser --allow-unrelated-histories pour forcer la fusion à se produire.

1476
répondu blue112 2017-06-30 10:32:23

dans mon cas, l'erreur était juste fatal: refusing to merge unrelated histories sur chaque première demande de pull après avoir ajouté à distance un git repo.

utilisant --allow-unrelated-histories drapeau travaillé avec la demande de traction de cette façon:

git pull origin branchname --allow-unrelated-histories

614
répondu adi 2016-10-18 12:13:29

essayez la commande suivante

git pull origin master --allow-unrelated-histories

cela devrait résoudre votre problème.

369
répondu Ogbonna Vitalis 2018-06-14 20:18:06

j'ai eu cette erreur quand j'ai créé un dépôt local en premier. Puis il est allé à github et a créé un nouveau dépôt. 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
173
répondu Adithya Bhat 2017-09-20 07:24:39

Essayer git pull --rebase development

34
répondu Daniel petrov 2017-01-20 14:09:33

puisque toutes les autres réponses ne répondent pas réellement à la question, voici une solution inspirée de 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 le rebase, mais vous êtes maintenant au milieu de celui-ci:

$ 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 que le parent commet la fusion d'origine s'engager:

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

    test merge commit

trouvez lequel des deux parents fusionnés est celui qui a été fusionné dans le courant (probablement le second, vérifiez avec git log 222222222 ), puis faites la fusion à la main, en copiant le message de propagation de la propagation originale:

$ 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.
17
répondu cdauth 2018-06-22 09:04:27

j'ai eu du mal avec ça aussi mais j'ai réussi à trouver une solution.

lorsque vous rencontrez l'erreur ci-dessus, il suffit de sélectionner la propagation de la fusion et de poursuivre la rebase:

git cherry-pick -m 1 1234deadbeef1234deadbeef
git rebase --continue
7
répondu el_tigro 2016-08-30 15:20:31