So synchronisierst du deinen lokalen Git-Branch mit dem Remote-Repository
Die Übereinstimmung deines lokalen Git-Branches mit dem entfernten Repository ist bei der Zusammenarbeit im Team entscheidend. Regelmäßiges Aktualisieren stellt sicher, dass deine Arbeit auf dem neuesten Stand basiert und Konflikte vermieden werden. Du kannst dies entweder manuell über zwei Befehle oder automatisiert mit nur einem Befehl durchführen.
In dieser Anleitung lernst du, wie du mit git fetch
Änderungen vom Remote abrufst, mit git merge
in deinen lokalen Branch übernimmst und mit git pull
beide Schritte in einem Durchgang erledigst. Vor dem Pushen deiner Änderungen solltest du den aktuellen Stand einholen, um reibungslos im Team arbeiten zu können.
Schnellstart
Verwende einen der folgenden Git-Befehle, um Updates aus einem entfernten Repository abzurufen:
Methode 1: Änderungen abrufen, aber nicht zusammenführen
$ git fetch <remote>
Methode 2: Abgerufene Änderungen manuell zusammenführen
$ git merge <remote>/<branch>
Methode 3: Änderungen abrufen und direkt zusammenführen
$ git pull <remote> <branch>
Du kannst somit selbst entscheiden, ob du die Änderungen erst prüfen oder direkt integrieren möchtest.
Verwendung von Git Fetch
Der Befehl git fetch
lädt Änderungen vom Remote herunter, ohne deine aktuelle Arbeitsumgebung zu verändern. Ideal, wenn du erst prüfen willst, was sich geändert hat, bevor du diese Änderungen übernimmst.
Syntax
git fetch [<optionen>] <remote> [<branch>]
- <remote>: Bezeichner des Remote-Repositories (z. B.
origin
). - <branch> (optional): Der spezifische Branch, den du abrufen möchtest.
- <optionen>: Zusätzliche Flags zur Steuerung des Befehls.
Häufig genutzte Optionen
git fetch <remote>
: Holt alle Branches vom angegebenen Remote.git fetch <remote> <branch>
: Ruft einen bestimmten Branch ab.git fetch --all
: Holt alle Daten von allen Remotes.git fetch --prune
: Entfernt veraltete Remote-Referenzen.git fetch --dry-run
: Zeigt an, was abgerufen würde, führt aber nichts aus.git fetch --depth=<n>
: Holt nur die letztenn
Commits (shallow fetch).git fetch --tags
: Lädt alle Tags vom Remote.git fetch --no-tags
: Überspringt das Laden von Tags.git fetch --force
: Überschreibt lokale Tracking-Branches mit Remote-Versionen.
Beispiel: Abrufen vom Remote
Prüfe zunächst, welcher Remote konfiguriert ist:
$ git remote -v
Beispielausgabe:
origin https://github.com/example/sample-project.git (fetch)
origin https://github.com/example/sample-project.git (push)
Hole die neuesten Daten vom Branch main
:
$ git fetch origin main
Status deines Branches prüfen:
$ git status
Falls dein Branch hinter dem Remote liegt, erscheint etwa diese Meldung:
Dein Branch liegt 3 Commits hinter „origin/main“ zurück …
Untersuche die abgerufenen Commits:
$ git log origin/main
Verwendung von Git Merge
Mit git merge
integrierst du Änderungen aus einem anderen Branch in deinen aktuellen Branch. Nutze diesen Befehl, um nach einem Fetch oder beim Zusammenführen von Feature-Branches zu arbeiten.
Syntax
git merge [<optionen>] <branch>
- <branch>: Der Branch, der in den aktiven Branch gemerged werden soll (z. B.
origin/main
).
Typische Optionen
--no-ff
: Erstellt immer einen Merge-Commit, selbst wenn ein Fast-Forward möglich wäre.--ff
: Erlaubt Fast-Forward-Merges.--ff-only
: Führt den Merge nur durch, wenn ein Fast-Forward möglich ist.--squash
: Kombiniert alle Commits in einen einzigen, ohne Merge-Commit zu erzeugen.--abort
: Bricht einen laufenden Merge ab.--no-commit
: Führt den Merge durch, stoppt aber vor dem Commit.--edit
: Öffnet den Editor für die Commit-Nachricht.--allow-unrelated-histories
: Erlaubt das Mergen von Projekten mit getrennten Historien.--quiet
: Reduziert die Ausgabe auf das Wesentliche.--stat
: Zeigt eine Zusammenfassung der Änderungen nach dem Merge.
Beispiel: Zusammenführen eines abgerufenen Branches
Prüfe, auf welchem Branch du dich aktuell befindest:
$ git branch
Führe die Änderungen aus dem Remote-Branch zusammen:
$ git merge origin/main
Überprüfe anschließend, ob die Zusammenführung erfolgreich war:
$ git status
Verwendung von Git Pull
git pull
kombiniert das Abrufen und das Zusammenführen in einem einzigen Schritt. Diese Methode eignet sich, um deinen Branch schnell zu aktualisieren, bevor du neue Commits erstellst oder pushst.
Syntax
git pull [<optionen>] <remote> <branch>
Gängige Optionen
--rebase
: Spielt lokale Commits nach dem Abrufen erneut auf.--no-rebase
: Führt ein klassisches Merge statt Rebase durch.--ff
: Aktiviert Fast-Forward, wenn möglich.--ff-only
: Bricht ab, wenn kein Fast-Forward möglich ist.--no-commit
: Führt das Merge durch, ohne direkt zu committen.--no-ff
: Erzwingt immer einen Merge-Commit.--verbose
: Zeigt ausführliche Informationen während des Prozesses.--quiet
: Minimiert die Ausgaben auf Fehler.--all
: Ruft alle Remotes gleichzeitig ab.--allow-unrelated-histories
: Erlaubt das Zusammenführen unabhängig voneinander entwickelter Projekte.--no-stat
: Unterdrückt die Übersicht der Änderungen.
Beispiel: Änderungen mit Git Pull abrufen
Prüfe den aktuellen Branch:
$ git branch
Hole die neuesten Änderungen vom Remote:
$ git pull origin main
Dieser Befehl führt intern folgendes aus: git fetch
gefolgt von git merge
.
Überprüfe nach dem Pull den aktuellen Status:
$ git status
Merge-Konflikte lösen
Wenn lokale und entfernte Änderungen kollidieren, informiert Git dich mit einer Meldung wie:
Unzusammengeführte Pfade vorhanden. (Konflikte beheben und „git commit“ ausführen)
Zur Konfliktlösung kannst du:
git pull --no-rebase origin main
verwenden, um nach dem Lösen der Konflikte normal zu mergen.git pull --rebase origin main
nutzen, um deine lokalen Commits oben auf den Remote-Stand zu setzen.
Nach der Konfliktbehebung
Füge die gelösten Dateien zur Staging-Area hinzu:
$ git add <file>
Dann committen:
$ git commit
Oder im Falle eines Rebase-Vorgangs:
$ git rebase --continue
Fazit
Du hast nun gelernt, wie du mit git fetch
, git merge
und git pull
deinen lokalen Git-Branch auf dem aktuellen Stand hältst. Ob du den manuellen Weg bevorzugst oder die automatische Variante – diese Methoden helfen dir, Konflikte zu vermeiden und mit einem sauberen Repository zu arbeiten.
Für den nächsten Schritt in deinem Git-Workflow solltest du dir anschauen, wie man Änderungen effizient commitet.