Ich habe vor kurzem angefangen, einen neuen Computer zu verwenden, und habe diesen Fehlerhinweis bemerkt und bemerkt, als ich versuchte, auf einen Branch zu pushen, nachdem ich etwas früher auf Github online gelöst und vergessen hatte, zu pullen.
Also habe ich gezogen, und normalerweise erhielt ich dabei eine Liste der Dateien, die Änderungen aufwiesen und die aufgelöst werden mussten, fügte sie hinzu und drückte sie dann.
Allerdings ist heute etwas anderes passiert, als ich darauf gestoßen bin. Ich habe diese Nachricht bekommen
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint:
hint: git config pull.rebase false # merge
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.
Wenn ich eine neue Maschine aufstelle, habe ich das noch nie gesehen. Das ist mein .gitconfig
auf zwei anderen Computern, auf denen ich diese Nachricht nicht gesehen habe, und auf dem, den ich gerade getan habe:
[user]
name = my name
email = my email
[format]
numbered = auto
[color]
branch = yes
diff = auto
pager = yes
status = auto
Ich habe das viele Male gemacht und plötzlich habe ich Amnesie. Ich erinnere mich nicht an diesen Hinweis/Fehler von Git jemals (6 Jahre). Ist das neu? Vielleicht kann ich mir die Geschichte von gits src ansehen? Wenn nicht, was ist die Standardeinstellung?
Es ist in der Tat neu (teilweise eingeführt in Git 2.27, mit einem Fix in 2.29): Sie können und sollten jetzt konfigurieren pull.rebase
und pull.ff
zu einigen Einstellungen.
Der Vorherige Ursprünglich Standard war das Äquivalent von pull.rebase false
und pull.ff true
. Das macht git pull
Lauf git merge
wenn möglich eine nicht zusammenführende “falsche” Zusammenführung im Schnellvorlauf oder eine echte Zusammenführung, wenn dies nicht möglich ist.
Konfigurieren pull.ff
zu only
macht git pull
Führen Sie das Äquivalent von aus git merge --ff-only
als zweiten Befehl (vorausgesetzt, Sie rebasen nicht). Dies ist meine allgemeine persönliche Präferenz, aber ich habe nicht überall Git 2.29 oder höher, also verwende ich immer noch mein eigenes Lauf git fetch
dann herumstöbern, dann entscheiden und vielleicht meine verwenden git mff
Alias, um eine Zusammenführung nur im schnellen Vorlauf durchzuführen Prozess.
Kurze Erklärung zu deinem Problem:
Git zwingt uns zu wählen, wie es mit der Unsynchronität zwischen unserem entfernten Zweig (z. B. origin/develop) und dem lokalen Zweig (develop) umgehen soll, sodass es einfach war, das Verhalten zu ändern, und fügte diese Nachricht hinzu, um Sie daran zu erinnern, dass Sie dies vielleicht möchten ändern Sie die Standardeinstellung.
Um dies zu beheben, müssen wir die Standardeinstellung wie folgt ändern:
git pull --ff-only
oder Event besser als globale Vorgabe mit
git config --global pull.ff only
Wenn es hilft, kann jemand diesen alternativen Weg gehen
Ich musste mich mit diesem Problem auseinandersetzen. Aber der folgende Vorschlag hat bei mir nicht funktioniert
- git config pull.rebase false
- git config pull.rebase true
- git config pull.ff only
OR even adding 'git config --global pull.ff only' not worked
Schließlich habe ich dieses Problem auf eine andere Weise gelöst.
Schritte :
- Create a new branch // git create branch new_branch
- switch to new branch // git checkout new_branch
- merge prev_branch to new_branch // git merge origin prev_branch
10120300cookie-checkWas ist/war die Standard-Git-Divergent-Merge-Strategie?yes
Es wurde in einer der letzten Git-Versionen eingeführt. Vielleicht haben Sie ältere Versionen verwendet, sodass Sie den Hinweis noch nie gesehen haben.
– ElpieKay
1. März um 1:58