it-swarm.com.de

Git weigert sich, nicht verwandte Historien auf Basis von Rebase zusammenzuführen

Während git rebase Origin/development wird die folgende Fehlermeldung von Git angezeigt:

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

Meine Git-Version ist 2.9.0. Früher hat es gut funktioniert.

Wie kann ich diese Neuordnung fortsetzen, indem ich mit der in der neuen Version eingeführten erzwungenen Flagge nicht verwandte Historien zulasse?

1760

Das Standardverhalten hat sich seit Git 2.9 geändert:

"Git Merge" wurde verwendet, um das Zusammenführen von zwei Zweigen zu ermöglichen, die standardmäßig keine gemeinsame Basis haben. Dies führte dazu, dass eine brandneue Historie eines vorhandenen Projekts erstellt und dann von einem ahnungslosen Betreuer abgerufen wurde, wodurch eine unnötige parallele Historie mit dem vorhandenen Projekt zusammengeführt werden konnte . Dem Befehl wurde beigebracht , dies standardmäßig nicht zuzulassen . Die Option Escape-Schraffur --allow-unrelated-histories wird in seltenen Fällen verwendet, in denen Historien zusammengeführt werden von zwei Projekten, die unabhängig voneinander ins Leben gerufen wurden.

Weitere Informationen finden Sie im Git release changelog .

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

2225
blue112

In meinem Fall war der Fehler nur fatal: refusing to merge unrelated histories bei jedem Versuch, insbesondere bei der ersten Pull-Anforderung nach dem Hinzufügen eines Git-Repository aus der Ferne.

Die Verwendung des Flags --allow-unrelated-histories hat bei einer Pull-Anfrage folgendermaßen funktioniert:

git pull Origin branchname --allow-unrelated-histories
960
adi

Versuchen Sie den folgenden Befehl:

git pull Origin master --allow-unrelated-histories

Dies sollte Ihr Problem lösen.

525
Ogbonna Vitalis

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 versucht habe zu drücken/ziehen, habe ich den gleichen fatal: unrelated_histories Fehler erhalten.

So habe ich es behoben:

git pull Origin master --allow-unrelated-histories
git merge Origin origin/master
... add and commit here...
git Push Origin master
214
Adithya Bhat

Geben Sie dazu den Befehl ein:

git pull Origin branchname --allow-unrelated-histories

Zum Beispiel,

git pull Origin master --allow-unrelated-histories

Referenz:

GitHub nicht verwandte Geschichten Problem

145
VIKAS KOHLI

Ich hatte das gleiche problem Versuche dies:

git pull Origin master --allow-unrelated-histories 

git Push Origin master
96
Aamir Kalimi
git pull Origin <branch> --allow-unrelated-histories

Sie werden zu einem Vim-Bearbeitungsfenster weitergeleitet:

  • Commit-Nachricht einfügen
  • Dann drücken Ctrl + X aus Vim herauskommen
  • git Push --set-upstream Origin <branch>
91
Las Lemieux

Versuchen Sie git pull --rebase development

42
Daniel petrov

Da alle anderen Antworten die Frage nicht beantworten, finden Sie hier eine Lösung, die von dieser Antwort für eine verwandte Frage inspiriert ist.

So bekommst du deinen Fehler beim git rebase:

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

Dieser Fehler bricht die Rebase nicht wirklich ab, aber Sie sind jetzt mittendrin:

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

So können Sie die Zusammenführung jetzt von Hand durchführen. Finden Sie die übergeordneten Commits des ursprünglichen Merge-Commits heraus:

$ 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, welches der beiden übergeordneten Elemente zusammengeführt wurde (wahrscheinlich das zweite, überprüfen Sie mit git log 222222222), und führen Sie die Zusammenführung manuell durch, indem Sie die Commit-Nachricht des ursprünglichen Merge-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.
32
cdauth

Das hat bei mir funktioniert:

git Push Origin master --force
27
Aniket Patil

Ich hatte das gleiche problem Das Problem liegt in der Ferne, etwas hat dies verhindert.

Ich habe zuerst ein lokales Repository erstellt. Ich habe eine LICENSE und eine README.md Datei zu meiner lokalen und zugesicherten hinzugefügt.

Dann wollte ich ein Remote-Repository, also habe ich eines auf GitHub erstellt. Hier ist mir ein Fehler unterlaufen, als ich "Initialize this repository with a README" (Dieses Repository mit einer README-Datei initialisieren) überprüft habe, wodurch auch in remote eine README.md erstellt wurde.

Also jetzt, als ich rannte

git Push --set-upstream Origin master

Ich habe:

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.

Um dies zu überwinden, tat ich es

git pull Origin master

Was zu dem folgenden Fehler führte:

From https://github.com/lokeshub/myTODs
branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories**

Ich habe es versucht:

git pull Origin master --allow-unrelated-histories

Ergebnis:

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.

Lösung:

Ich habe das entfernte Repository entfernt und ein neues erstellt (ich denke nur das Entfernen der Datei README hätte funktionieren können) und danach hat das Folgende funktioniert:

git remote rm Origin
git remote add Origin https://github.com/lokeshub/myTODOs.git
git Push --set-upstream Origin master
27
Lokesh Purohit

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 das Merge-Commit aus und setzen Sie die Neugründung fort:

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