Wie man "git pull" wieder wie erwartet zum Laufen bringt


2

Ich benutze msysgit (Git für Windows). Früher war es so, dass das Ausführen von "git pull" automatisch "git fetch" auslöste und dann meine Änderungen auf jedem Zweig mit dem neuen HEAD von oben neu ausrichtete. Jetzt scheint es, dass "Git Pull" mir normalerweise nur Fehler darüber gibt, wie ich keinen "Branch. *. Merge" in meiner Konfigurationsdatei gesetzt habe. Als dies vorher funktionierte, hatte ich in meiner Konfigurationsdatei nichts Besonderes gemacht. So erstelle ich meine lokalen Niederlassungen? Normalerweise mache ich das:

git checkout -b localbranch origin/remotebranch

Ist das der beste Weg, um Zweige so zu erstellen, dass "git pull" sie automatisch zusammenführt? (weil es bei mir nicht zu funktionieren scheint)

Antworten:


5

Sie benötigen in Ihrer Konfigurationsdatei etwas Ähnliches wie das Folgende:

[branch "master"]
    remote = origin
    merge = refs/heads/master

Wenn Sie diese Informationen für einen vorhandenen Zweig hinzufügen müssen, können Sie den folgenden Befehl verwenden:

git branch --set-upstream mybranch origin/remotebranch

Wenn Sie eine neue Verzweigung erstellen, können Sie mit einem der folgenden Befehle sicherstellen, dass es sich bei der Verzweigung um eine Remote-Verfolgungsverzweigung handelt:

git branch --track mybranch origin/remotebranch
git checkout --track -b mybranch origin/remotebranch

Sollte --trackjedoch die Standardeinstellung sein. Ist dies nicht der branch.autosetupmergeFall , ist die Einstellung möglicherweise auf false festgelegt. Um es zurückzusetzen, können Sie es auf true setzen oder aufheben:

git config --global branch.autosetupmerge true
git config --global --unset branch.autosetupmerge

Vielen Dank. Das hat es geschafft. Gibt es einen Befehl zum Erstellen eines Zweigs, den ich verwenden kann, der dies automatisch ausführt?
Andrew Arnott

0

Seien Sie vorsichtig mit den oben genannten. Ich bin nur mit Git unter Linux vertraut, daher können die Details variieren.

"git fetch" ruft die Änderungen ab, macht nichts anderes "git pull" macht einen "git fetch" und dann einen "git merge" (dh es führt die entfernten Änderungen in das aktuelle Zeug zusammen) "git pull -r" macht einen " git fetch "und dann ein" git rebase "(dh aktualisiert die Spitze des Zweigs, in dem Sie sich befinden, auf den entfernten Zweig und baut dann Ihre Änderungen oben auf)

Meine Hilfe für "git pull" (Version 1.8.1-290) weist mich an, mir branch. <Name> .rebase und branch.autosetuprebase in "git config" anzusehen, um dies automatisch einzurichten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.