Frage Git weigert sich, nicht verwandte Geschichten auf Rebase zu verschmelzen


Während git rebase origin/development Folgende Fehlermeldung wird von Git angezeigt:

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

Meine git Version ist 2.9.0. Wurde in der vorherigen Version verwendet.

Wie kann ich diese Rebase fortsetzen, die nicht verwandte Geschichten mit der erzwungenen Flagge erlaubt, die in neuer Freigabe eingeführt wird?


987
2018-06-21 07:23


Ursprung


Antworten:


Das Standardverhalten hat sich seit Git 2.9 geändert:

"git merge" verwendet, um zwei Zweige zusammenführen zu können, die keine gemeinsame haben      Basis standardmäßig, was zu einer brandneuen Geschichte eines bestehenden führte      Projekt erstellt und dann von einem ahnungslosen Betreuer gezogen,      das erlaubte eine unnötige parallele Geschichte, die in die      bestehendes Projekt. Der Befehl wurde eingelernt dies nicht zuzulassen      Standardmit einer Notluke --allow-unrelated-histories Möglichkeit      in einem seltenen Ereignis verwendet werden, das die Geschichten von zwei Projekten zusammenführt      das begann ihr Leben unabhängig.

Siehe die git release changelog für mehr Informationen.

Sie können verwenden --allow-unrelated-histories um die Zusammenführung zu erzwingen.


1335
2018-06-21 07:26



In meinem Fall war der Fehler einfach fatal: refusing to merge unrelated histories auf jeden besonders ersten Pull-Request nach dem Remote-Hinzufügen eines Git Repo.

Verwenden --allow-unrelated-histories Flagge arbeitete mit Pull-Anfrage auf diese Weise:

git pull origin branchname --allow-unrelated-histories


547
2017-10-18 12:13



Versuchen Sie den folgenden Befehl

git pull origin master --allow-unrelated-histories

Das sollte dein Problem lösen.


292
2017-11-20 16:41



Ich habe diesen Fehler erhalten, als ich zuerst ein lokales Repository eingerichtet habe. Dann ging ich zu Github und erstellte ein neues Repository. Dann rannte ich

git remote add origin <repository url>

Als ich versuchte zu schieben / ziehen, bekam ich das gleiche fatal: unrelated_histories Error. Hier ist, wie ich es behoben habe:

git pull origin master --allow-unrelated-histories
git merge origin origin/master
... add and commit here...
git push origin master

160
2018-06-08 17:41



Versuchen git pull --rebase development


32
2018-01-20 14:05



Ich hatte auch damit zu kämpfen, aber es gelang mir, einen Workaround zu finden.

Wenn Sie auf den obigen Fehler stoßen, wählen Sie einfach den Merge-Commit aus und setzen Sie die Rebase fort:

git cherry-pick -m 1 1234deadbeef1234deadbeef
git rebase --continue

6
2017-08-30 15:20



Da alle anderen Antworten die Frage nicht wirklich beantworten, ist hier eine Lösung inspiriert diese Antwort zu einer verwandten Frage.

Du bekommst also deinen Fehler, git rebase zu machen:

$ git rebase origin/development
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef

Dieser Fehler löscht die Rebase nicht wirklich, aber Sie sind jetzt mitten drin:

$ git status
interactive rebase in progress; onto 4321beefdead
Last command done (1 command done):
   pick 1234deadbeef1234deadbeef test merge commit

So können Sie jetzt die Zusammenführung von Hand vornehmen. Ermitteln Sie die Eltern-Commits des ursprünglichen Merge-Commits:

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

    test merge commit

Finden Sie heraus, welcher der beiden Eltern zusammengeführt wird, der mit dem aktuellen zusammengeführt wurde (wahrscheinlich der zweite, verifizieren mit git log 222222222), und führen Sie dann die Zusammenführung von Hand aus, indem Sie die Commit-Nachricht des ursprünglichen Zusammenführungs-Commits kopieren:

$ 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.

4
2018-06-22 09:04