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

3397
Andrew Arnott

Ich verwende msysgit (Git für Windows). Früher war es so, dass das Ausführen von "git pull" automatisch "git fetch" war und dann meine Änderungen in jedem Zweig mit dem neuen HEAD aus dem Upstream-Bereich widerlegt. Nun scheint es, dass "git pull" in der Regel nur Fehler in meiner Konfigurationsdatei anzeigt, wie ich keine "branch. *. Merge" eingestellt habe. Als dies vorher funktionierte, hatte ich in meiner Konfigurationsdatei nichts Besonderes getan. Wie erstelle ich meine lokalen Niederlassungen? Ich mache das normalerweise:

git checkout -b localbranch origin/remotebranch

Ist dies der beste Weg, um Zweige so zu erstellen, dass "git pull" sie automatisch zusammenführt? (weil es für mich nicht zu funktionieren scheint)

2

2 Antworten auf die Frage

5
Robert Munteanu

Sie benötigen etwas Ähnliches in Ihrer Konfigurationsdatei:

[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 Befehl verwenden:

git branch --set-upstream mybranch origin/remotebranch 

Wenn Sie einen neuen Zweig erstellen, können Sie mit einem der folgenden Befehle sicherstellen, dass der Zweig ein Remote-Tracking-Zweig ist:

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

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

git config --global branch.autosetupmerge true git config --global --unset branch.autosetupmerge 
Vielen Dank. Das hat es geschafft. Gibt es einen Befehl zum Erstellen einer Verzweigung, den ich automatisch verwenden kann? Andrew Arnott vor 15 Jahren 0
0
vonbrand

Be careful with the above. I'm only familiar with git on Linux, so details might vary.

"git fetch" gets the changes, does nothing else "git pull" does a "git fetch" and then a "git merge" (i.e., it merges the remote changes into the current stuff) "git pull -r" does a "git fetch" and then a "git rebase" (i.e., updates the tip of the branch where you are to the remote one and then rebases your changes on top)

My help for "git pull" (version 1.8.1-290) directs me to look at branch.<name>.rebase and branch.autosetuprebase in "git config" to set this up automatically.