So prüfen Sie, ob ein Git-Repository uncommittete Änderungen hat

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 in einem Git-Repository auf uncommittete Änderungen prüfen können. Wir werden uns den essentiellen Befehl git status anschauen, um den Gesamtzustand Ihres Arbeitsverzeichnisses und der vorgestellten (staged) Änderungen anzuzeigen.

Darüber hinaus werden Sie entdecken, wie Sie den Befehl git diff verwenden können, um die spezifischen Änderungen in Ihren Dateien zu untersuchen. Dies ermöglicht es Ihnen, genau zu sehen, was sich geändert hat, bevor Sie die Änderungen committen. Abschließend werden wir kurz darauf eingehen, wie Sie die Prüfung sowohl auf vorgestellte als auch auf nicht vorgestellte Änderungen kombinieren können.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/diff("Compare Changes") subgraph Lab Skills git/add -.-> lab-560091{{"So prüfen Sie, ob ein Git-Repository uncommittete Änderungen hat"}} git/status -.-> lab-560091{{"So prüfen Sie, ob ein Git-Repository uncommittete Änderungen hat"}} git/diff -.-> lab-560091{{"So prüfen Sie, ob ein Git-Repository uncommittete Änderungen hat"}} end

Ausführen von git status zur Anzeige von Änderungen

In diesem Schritt lernen wir, wie wir den Befehl git status verwenden können, um den aktuellen Zustand unseres Git-Repositorys anzuzeigen. Dieser Befehl ist Ihr bester Freund, wenn Sie mit Git arbeiten, da er Ihnen genau mitteilt, was passiert.

Zunächst stellen Sie sicher, dass Sie sich im Verzeichnis my-time-machine befinden. Sie können dies tun, indem Sie Folgendes eingeben:

cd ~/project/my-time-machine

Jetzt führen wir den Befehl git status aus:

git status

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

Lassen Sie uns diese Ausgabe analysieren:

  • On branch master: Dies gibt an, dass Sie derzeit auf dem master-Branch sind. Branches sind wie verschiedene Zeitlinien in Ihrem Projekt.
  • Your branch is up to date with 'origin/master': Dies zeigt an, dass Ihr lokaler master-Branch mit dem Remote-Branch origin/master synchronisiert ist (wir werden später mehr über Remote-Repositories lernen).
  • nothing to commit, working tree clean: Dies ist der ideale Zustand! Es bedeutet, dass es keine Änderungen in Ihrem Projekt gibt, die noch nicht in der Git-Geschichte gespeichert (committed) wurden.

Der Befehl git status ist von entscheidender Bedeutung, da er Ihnen hilft zu verstehen, welche Dateien geändert wurden, welche neu und nicht verfolgt werden und welche Änderungen bereit zum Committen sind. Es ist der erste Befehl, den Sie nach jeder Änderung an Ihrem Projekt ausführen sollten, um zu sehen, wie Git diese Änderungen wahrnimmt.

Verwenden von git diff zur Untersuchung von Änderungen

In diesem Schritt lernen wir, wie wir den Befehl git diff verwenden können, um die genauen Änderungen in unseren Dateien anzuzeigen. Während git status Ihnen mitteilt, welche Dateien geändert wurden, zeigt git diff, was in diesen Dateien geändert wurde.

Zunächst machen wir eine Änderung an unserer Datei message.txt. Stellen Sie sicher, dass Sie sich immer noch im Verzeichnis ~/project/my-time-machine befinden.

Öffnen Sie die Datei mit dem nano-Editor:

nano message.txt

Fügen Sie eine neue Zeile zur Datei hinzu, beispielsweise:

Hello, Future Me
This is a new line.

Drücken Sie Ctrl + X, um zu beenden, dann Y, um zu speichern, und Enter, um den Dateinamen zu bestätigen.

Nachdem wir die Datei geändert haben, sehen wir uns an, wie Git diese Änderung mit git status wahrnimmt:

git status

Sie sollten eine Ausgabe sehen, die anzeigt, dass message.txt geändert wurde:

On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

no changes added to commit (use "git add" and/or "git commit -a")

Git teilt uns mit, dass message.txt modified (geändert) ist und die Änderungen not staged for commit (nicht für einen Commit vorgemerkt) sind. Dies bedeutet, dass wir die Datei geändert haben, aber Git noch nicht gesagt haben, dass diese Änderung für einen Commit vorbereitet werden soll.

Jetzt verwenden wir git diff, um die spezifischen Änderungen anzuzeigen:

git diff

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+This is a new line.

Lassen Sie uns diese Ausgabe verstehen:

  • Zeilen, die mit --- und +++ beginnen, zeigen die ursprüngliche Datei (a/message.txt) und die neue Datei (b/message.txt) an.
  • Die Zeile, die mit @@ beginnt, wird "Hunk-Header" genannt. Sie zeigt an, wo sich die Änderungen in der Datei befinden. -1 +1,2 bedeutet, dass ab Zeile 1 in der ursprünglichen Datei 1 Zeile entfernt wurde und ab Zeile 1 in der neuen Datei 2 Zeilen hinzugefügt wurden.
  • Zeilen, die mit - beginnen, zeigen Zeilen, die entfernt wurden.
  • Zeilen, die mit + beginnen, zeigen Zeilen, die hinzugefügt wurden.

In unserem Fall haben wir eine Zeile hinzugefügt, daher sehen Sie eine Zeile, die mit + beginnt.

Der Befehl git diff ist unglaublich nützlich, um Ihre Änderungen zu überprüfen, bevor Sie sie vorbereiten (stage) oder committen. Er hilft Ihnen, Fehler zu finden und sicherzustellen, dass Sie nur die beabsichtigten Änderungen in Ihre Commits aufnehmen.

Drücken Sie q, um die Diff-Ansicht zu verlassen und zum Befehlszeilenprompt zurückzukehren.

Kombinieren von Prüfungen für vorgemerkte und nicht vorgemerkte Änderungen

In diesem Schritt werden wir untersuchen, wie Git sowohl vorgemerkte (staged) als auch nicht vorgemerkte Änderungen behandelt und wie git diff verwendet werden kann, um diese zu überprüfen.

Denken Sie sich aus dem vorherigen Schritt zurück, dass wir message.txt geändert haben, aber die Änderungen nicht vorgemerkt haben. Lassen Sie uns die Änderungen jetzt mit git add vorbereiten:

git add message.txt

Jetzt führen wir erneut git status aus:

git status

Die Ausgabe sollte anzeigen, dass die Änderungen jetzt vorgemerkt sind:

On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   message.txt

Git zeigt jetzt Changes to be committed an, was bedeutet, dass die Änderungen an message.txt im Staging-Bereich sind und für den nächsten Commit bereit sind.

Was passiert, wenn wir jetzt git diff ausführen?

git diff

Sie könnten überrascht sein, keine Ausgabe zu sehen. Dies liegt daran, dass git diff standardmäßig die Unterschiede zwischen Ihrem Arbeitsverzeichnis und dem Staging-Bereich anzeigt. Da die Änderungen in unserem Arbeitsverzeichnis jetzt die gleichen wie die im Staging-Bereich sind (weil wir sie gerade hinzugefügt haben), gibt es keine Unterschiede anzuzeigen.

Um die Unterschiede zwischen dem Staging-Bereich und dem letzten Commit zu sehen, müssen wir eine andere Form des git diff-Befehls verwenden:

git diff --staged

Oder äquivalent:

git diff --cached

Beide Befehle tun dasselbe. Lassen Sie uns ihn ausführen:

git diff --staged

Jetzt sollten Sie die Unterschiede zwischen den vorgemerkten Änderungen und dem letzten Commit sehen:

diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+This is a new line.

Dies zeigt die genaue Änderung, die wir vorgenommen haben: das Hinzufügen der Zeile "This is a new line.".

Das Verständnis der Unterschiede zwischen git diff (Arbeitsverzeichnis vs. Staging-Bereich) und git diff --staged (Staging-Bereich vs. letzter Commit) ist grundlegend für die effektive Nutzung von Git. Es ermöglicht Ihnen, Ihre Änderungen in verschiedenen Stadien sorgfältig zu überprüfen, bevor Sie einen dauerhaften Commit vornehmen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man uncommittete Änderungen in einem Git-Repository prüft. Wir haben begonnen, den Befehl git status zu verwenden, um einen Überblick über den Zustand des Repositorys zu erhalten, einschließlich des aktuellen Branches und ob es geänderte, neue oder nicht verfolgte Dateien gibt. Dieser Befehl ist unerlässlich, um zu verstehen, welche Änderungen vorhanden sind.

Als Nächstes haben wir uns den Befehl git diff angeschaut, um die spezifischen Änderungen in den Dateien zu untersuchen. Während git status uns mitteilt, welche Dateien geändert wurden, zeigt git diff die genauen zeilenweisen Unterschiede an. Dies ermöglicht es uns, den Inhalt unserer Änderungen zu überprüfen, bevor wir sie vorbereiten (stage) oder committen.