Was ist/war die Standard-Git-Divergent-Merge-Strategie?

Lesezeit: 3 Minuten

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

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 mergewenn 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 fetchdann 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

1012030cookie-checkWas ist/war die Standard-Git-Divergent-Merge-Strategie?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy