So prüfen Sie, ob ein Git-Branch hinter dem Remote-Branch zurückliegt

GitGitBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie feststellen können, ob Ihr lokaler Git-Branch hinter seinem entsprechenden Remote-Branch zurückliegt. Wir werden die wesentlichen Schritte dazu behandeln, beginnend mit dem Abrufen der neuesten Änderungen aus dem Remote-Repository mit git fetch.

Nach dem Abruf nutzen Sie git status, um schnell zu überprüfen, ob Ihr Branch hinter dem Remote-Branch zurückliegt. Abschließend lernen Sie, wie Sie git log HEAD..@{u} verwenden, um die spezifischen Commits anzuzeigen, die nur auf dem Remote-Branch, nicht aber auf Ihrem lokalen Branch existieren. Dies gibt Ihnen ein detailliertes Verständnis der Unterschiede.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git(("Git")) -.-> git/CollaborationandSharingGroup(["Collaboration and Sharing"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/BasicOperationsGroup -.-> git/status("Check Status") git/BranchManagementGroup -.-> git/log("Show Commits") git/CollaborationandSharingGroup -.-> git/fetch("Download Updates") git/CollaborationandSharingGroup -.-> git/pull("Update & Merge") git/CollaborationandSharingGroup -.-> git/remote("Manage Remotes") subgraph Lab Skills git/status -.-> lab-560042{{"So prüfen Sie, ob ein Git-Branch hinter dem Remote-Branch zurückliegt"}} git/log -.-> lab-560042{{"So prüfen Sie, ob ein Git-Branch hinter dem Remote-Branch zurückliegt"}} git/fetch -.-> lab-560042{{"So prüfen Sie, ob ein Git-Branch hinter dem Remote-Branch zurückliegt"}} git/pull -.-> lab-560042{{"So prüfen Sie, ob ein Git-Branch hinter dem Remote-Branch zurückliegt"}} git/remote -.-> lab-560042{{"So prüfen Sie, ob ein Git-Branch hinter dem Remote-Branch zurückliegt"}} end

Abrufen von Remote-Änderungen mit git fetch

In diesem Schritt lernen wir, wie man Änderungen aus einem Remote-Git-Repository abruft. Stellen Sie sich vor, Sie arbeiten mit anderen zusammen und diese haben Änderungen am Projekt vorgenommen. git fetch ist der Befehl, den Sie verwenden, um diese Änderungen auf Ihren lokalen Rechner herunterzuladen, ohne sie in Ihre aktuelle Arbeit zu mergen.

Zunächst simulieren wir das Vorhandensein eines Remote-Repositories. Wir erstellen ein einfaches Repository lokal zu Demonstrationszwecken.

cd ~/project
mkdir remote-repo
cd remote-repo
git init --bare

Dies erstellt ein "bare" (nacktes) Repository, das typischerweise als zentrales Remote-Repository verwendet wird. Jetzt kehren wir zu unserem my-time-machine-Repository zurück und fügen dieses als Remote hinzu.

cd ~/project/my-time-machine
git remote add origin ../remote-repo

Wir haben ein Remote namens origin hinzugefügt, das auf unser simuliertes Remote-Repository zeigt. Jetzt machen wir eine Änderung im Remote-Repository und holen sie dann ab.

cd ~/project/remote-repo
echo "This is a remote change." > remote_file.txt
git add remote_file.txt
git commit -m "Add remote file"

Jetzt kehren wir in unser my-time-machine-Repository zurück und holen die Änderungen aus dem Remote-Repository ab.

cd ~/project/my-time-machine
git fetch origin

Sie sollten eine Ausgabe sehen, die darauf hinweist, dass Git die Änderungen aus dem Remote-Repository heruntergeladen hat. Etwa so:

remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 2 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), 258 bytes | 258.00 KiB | elapsed 0.00s.
From ../remote-repo
 * [new branch]      master     -> origin/master

Der git fetch-Befehl lädt die Commits, Dateien und Referenzen aus dem Remote-Repository in Ihr lokales Repository herunter. Allerdings werden diese Änderungen nicht automatisch in Ihren aktuellen Arbeitsbranch gemergt. Dies ermöglicht es Ihnen, die Änderungen zu überprüfen, bevor Sie sie integrieren.

Denken Sie sich git fetch wie das Abrufen der neuesten Updates aus einem Newsfeed. Sie sehen die Überschriften und Zusammenfassungen, aber Sie haben die vollständigen Artikel noch nicht gelesen. Sie können später entscheiden, welche Artikel (Änderungen) Sie lesen (mergen) möchten.

Verwenden von git status zum Überprüfen des "hinterher" -Status

Im vorherigen Schritt haben wir Änderungen aus dem Remote-Repository abgerufen. Jetzt verwenden wir git status, um zu sehen, wie unser lokales Repository im Vergleich zum Remote-Repository steht.

Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project/my-time-machine befinden:

cd ~/project/my-time-machine

Jetzt führen Sie den git status-Befehl aus:

git status

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)

nothing to commit, working tree clean

Diese Ausgabe sagt uns einige wichtige Dinge:

  • "On branch master": Wir befinden uns derzeit auf dem master-Branch.
  • "Your branch is behind 'origin/master' by 1 commit": Dies ist die wichtigste Nachricht! Sie zeigt an, dass unser lokaler master-Branch einen Commit hinter dem master-Branch auf dem origin-Remote liegt. Das bedeutet, dass es einen Commit auf dem Remote gibt, den wir noch nicht lokal haben.
  • "(use "git pull" to update your local branch)": Git gibt uns sogar einen Tipp, wie wir unseren lokalen Branch auf den neuesten Stand bringen können.

Der git status-Befehl ist Ihr Fenster in den Zustand Ihres Repositories. Er sagt Ihnen, auf welchem Branch Sie sich befinden, ob Sie uncommittete Änderungen haben und wie Ihr aktueller Branch im Vergleich zu seinem upstream-Branch (in diesem Fall origin/master) steht.

Das Verständnis der Ausgabe von git status ist entscheidend für die effektive Arbeit mit Git. Es hilft Ihnen zu wissen, ob Sie Änderungen aus dem Remote-Repository abrufen müssen, ob Sie Änderungen committen müssen oder ob Ihr Arbeitsverzeichnis sauber ist.

Ausführen von git log HEAD..@{u} für fehlende Commits

Im vorherigen Schritt hat uns git status mitgeteilt, dass unser lokaler Branch hinter dem Remote-Branch zurückliegt. Aber wie können wir sehen, welche Commits wir fehlen?

Wir können den git log-Befehl mit einer speziellen Syntax verwenden, um nur die Commits anzuzeigen, die sich auf dem Remote-Branch, aber nicht auf unserem lokalen Branch befinden. Die Syntax HEAD..@{u} vergleicht unseren aktuellen Branch (HEAD) mit seinem upstream-Branch (@{u}, was in unserem Fall origin/master ist).

Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project/my-time-machine befinden:

cd ~/project/my-time-machine

Jetzt führen Sie den folgenden Befehl aus:

git log HEAD..@{u}

Sie sollten den Log-Eintrag für den Commit sehen, den wir im Remote-Repository in Schritt 1 gemacht haben:

commit <commit-hash> (origin/master)
Author: Your Name <[email protected]>
Date:   <Date and Time>

    Add remote file

Dieser Befehl ist sehr nützlich, um genau zu sehen, welche Änderungen Sie erhalten, wenn Sie aus dem Remote-Repository pullen. Er zeigt Ihnen die Commit-Historie, die auf dem Remote-Tracking-Branch (origin/master) vorhanden ist, aber noch nicht auf Ihrem lokalen Branch (master).

Das Verständnis, wie man die fehlenden Commits anzeigt, ist wichtig, um mit der Arbeit Ihrer Mitarbeiter Schritt zu halten und Ihre Merges zu planen.

Drücken Sie q, um die Log-Ansicht zu verlassen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man prüft, ob ein lokaler Git-Branch hinter seinem Remote-Gegenstück zurückliegt. Wir haben begonnen, indem wir ein Remote-Repository simuliert und es mit git remote add zu unserem lokalen Projekt hinzugefügt haben. Anschließend haben wir das Verwenden von git fetch geübt, um Änderungen aus dem Remote-Repository herunterzuladen, ohne sie zu mergen. Dies zeigt, wie dieser Befehl unser lokales Repository mit den neuesten Informationen aus dem Remote-Repository aktualisiert.

Nach dem Fetch hätten wir normalerweise git status verwendet, um zu sehen, ob unser aktueller Branch hinter dem Remote-Tracking-Branch zurückliegt, und git log HEAD..@{u}, um die spezifischen Commits anzuzeigen, die auf dem Remote-Repository vorhanden sind, aber noch nicht in unserem lokalen Branch. Diese Schritte geben insgesamt ein klares Bild der Abweichung zwischen unserer lokalen Arbeit und dem Remote-Repository.