Wie man prüft, ob eine Datei in Git geändert wurde

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 Änderungen in Ihrem Git-Repository überprüfen können. Wir werden die essentiellen Git-Befehle git status und git diff untersuchen, um geänderte Dateien zu identifizieren und die spezifischen Änderungen an diesen Dateien zu untersuchen.

Durch praktische Übungen üben Sie die Verwendung von git status, um zu sehen, welche Dateien geändert wurden, und git diff, um die zeilenweisen Unterschiede zwischen dem aktuellen Zustand Ihrer Dateien und der zuletzt committeten Version anzuzeigen. Sie lernen auch, wie Git Dateien markiert, die nicht geändert wurden.


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-560022{{"Wie man prüft, ob eine Datei in Git geändert wurde"}} git/status -.-> lab-560022{{"Wie man prüft, ob eine Datei in Git geändert wurde"}} git/diff -.-> lab-560022{{"Wie man prüft, ob eine Datei in Git geändert wurde"}} end

Führen Sie git status aus, um geänderte Dateien anzuzeigen

In diesem Schritt lernen wir, wie wir git status verwenden können, um die Änderungen in unserem Projekt anzuzeigen.

Zunächst stellen wir sicher, dass wir uns im Projektverzeichnis befinden. Öffnen Sie Ihr Terminal und geben Sie ein:

cd ~/project/my-time-machine

Jetzt erstellen wir eine neue Datei. Wir fügen eine einfache Zeile zur Datei message.txt hinzu:

echo "P.S. Hope you're doing well!" >> message.txt

Das Symbol >> hängt den Text an die vorhandene Datei an, anstatt sie zu überschreiben.

Lassen Sie uns den Inhalt der Datei überprüfen, um die Änderung zu bestätigen:

cat message.txt

Sie sollten Folgendes sehen:

Hello, Future Me
P.S. Hope you're doing well!

Jetzt sehen wir uns an, wie Git diese Änderung wahrnimmt. Führen Sie den Befehl git status aus:

git status

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

On branch 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 "modifiziert" wurde. Dies bedeutet, dass Git weiß, dass sich die Datei seit dem letzten Commit geändert hat, aber die Änderungen noch nicht in den Staging-Bereich aufgenommen wurden.

Das Verständnis von git status ist von entscheidender Bedeutung, da es Ihnen den aktuellen Zustand Ihres Arbeitsverzeichnisses und des Staging-Bereichs mitteilt. Es ist Ihr wichtigstes Werkzeug, um zu wissen, welche Änderungen Sie vorgenommen haben und was zum Commit bereit ist.

Verwenden Sie git diff, um Änderungen zu untersuchen

Im vorherigen Schritt haben wir gesehen, dass git status uns mitteilt, welche Dateien geändert wurden. Aber was, wenn wir genau wissen möchten, welche Änderungen vorgenommen wurden? Hier kommt git diff ins Spiel!

git diff zeigt Ihnen die Unterschiede zwischen Ihrem Arbeitsverzeichnis und dem letzten Commit (oder dem Staging-Bereich, je nachdem, wie Sie es verwenden). Es ist wie das Vergleichen der aktuellen Version Ihrer Datei mit der Version an Ihrem letzten Speicherpunkt.

Probieren wir es aus. Stellen Sie sicher, dass Sie sich immer noch im Verzeichnis ~/project/my-time-machine befinden und führen Sie aus:

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
+P.S. Hope you're doing well!

Lassen Sie uns diese Ausgabe analysieren:

  • diff --git a/message.txt b/message.txt: Diese Zeile teilt uns mit, dass Git zwei Versionen der Datei message.txt vergleicht.
  • index a1b2c3d..e4f5g6h 100644: Dies sind technische Informationen über die Dateiversionen.
  • --- a/message.txt: Dies zeigt die ursprüngliche Version der Datei (vor Ihren Änderungen) an.
  • +++ b/message.txt: Dies zeigt die neue Version der Datei (mit Ihren Änderungen) an.
  • @@ -1 +1,2 @@: Dies wird als "Hunk-Header" (Änderungsblock-Header) bezeichnet. Es sagt Ihnen, wo sich die Änderungen in der Datei befinden. -1 bedeutet, dass eine Zeile ab Zeile 1 (in der ursprünglichen Datei) entfernt wurde, und +1,2 bedeutet, dass ab Zeile 1 zwei Zeilen vorhanden sind (in der neuen Datei).
  • +P.S. Hope you're doing well!: Zeilen, die mit einem + beginnen, zeigen hinzugefügte Zeilen an. Wenn Sie eine Zeile gelöscht hätten, würde sie mit einem - beginnen.

git diff ist ein unglaublich mächtiges Werkzeug. Bevor Sie Ihre Änderungen committen, ist es immer eine gute Idee, git diff auszuführen, um genau zu überprüfen, was Sie speichern möchten. Dies hilft, versehentliches Committen von unerwünschten Änderungen zu vermeiden.

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

Testen von unveränderten Dateien

In den vorherigen Schritten haben wir gesehen, wie git status und git diff funktionieren, wenn eine Datei geändert wurde. Aber was passiert, wenn wir diese Befehle ausführen, wenn es keine Änderungen gibt?

Lassen Sie uns es herausfinden! Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project/my-time-machine befinden.

Zunächst führen Sie git status aus:

git status

Da wir seit dem letzten Statuscheck keine Änderungen vorgenommen haben, sollten Sie die gleiche Ausgabe wie zuvor sehen, die darauf hinweist, dass message.txt geändert, aber noch nicht in den Staging-Bereich aufgenommen wurde:

On branch 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")

Jetzt versuchen wir es erneut mit git diff:

git diff

Sie sollten die gleiche Diff-Ausgabe wie zuvor sehen, die den Unterschied zwischen der aktuellen Datei und dem letzten Commit zeigt:

diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+P.S. Hope you're doing well!

Dies bestätigt, dass git status und git diff Ihnen den aktuellen Zustand Ihres Arbeitsverzeichnisses im Vergleich zum letzten Commit anzeigen, unabhängig davon, wie oft Sie die Befehle ausführen, ohne weitere Änderungen vorzunehmen.

Jetzt nehmen wir die Änderungen, die wir an message.txt vorgenommen haben, mit git add in den Staging-Bereich auf:

git add message.txt

Führen Sie erneut git status aus:

git status

Die Ausgabe wird sich ändern, um anzuzeigen, dass die Änderungen jetzt im Staging-Bereich sind:

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

Beachten Sie, dass git status jetzt "Changes to be committed" (Änderungen, die committet werden sollen) anzeigt. Dies bedeutet, dass die Änderungen sich im Staging-Bereich befinden und für den nächsten Commit bereit sind.

Wie sieht es jetzt mit git diff aus? Versuchen wir es:

git diff

Diesmal wird git diff keine Ausgabe anzeigen. Warum? Weil git diff ohne Argumente Ihr Arbeitsverzeichnis mit dem Staging-Bereich vergleicht. Da wir die Änderungen gerade in den Staging-Bereich aufgenommen haben, sind das Arbeitsverzeichnis und der Staging-Bereich identisch.

Um den Unterschied zwischen dem Staging-Bereich und dem letzten Commit zu sehen, würden Sie git diff --staged verwenden. Versuchen wir das:

git diff --staged

Dies wird die Diff der Änderungen anzeigen, die sich derzeit im Staging-Bereich befinden, also die Zeile, die wir hinzugefügt haben:

diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+P.S. Hope you're doing well!

Das Verständnis des Unterschieds zwischen git diff (Arbeitsverzeichnis vs. Staging-Bereich) und git diff --staged (Staging-Bereich vs. letzter Commit) ist ein Schlüsselkonzept in Git. Es hilft Ihnen, Ihre Änderungen zu verwalten, bevor Sie sie committen.

Drücken Sie q, um die Diff-Ansicht zu verlassen, falls sie angezeigt wird.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Änderungen in einem Git-Repository prüft. Wir haben begonnen, indem wir git status verwendet haben, um festzustellen, welche Dateien im Arbeitsverzeichnis seit dem letzten Commit geändert wurden. Dieser Befehl gibt eine Zusammenfassung des aktuellen Zustands des Repositorys und zeigt geänderte, in den Staging-Bereich aufgenommene und nicht verfolgte Dateien an.

Anschließend haben wir git diff untersucht, um die spezifischen Änderungen in einer geänderten Datei zu prüfen. Dieser Befehl zeigt eine zeilenweise Vergleich zwischen der aktuellen Version der Datei im Arbeitsverzeichnis und der Version im letzten Commit an und hebt Hinzufügungen und Löschungen hervor. Schließlich haben wir bestätigt, dass git status korrekt meldet, dass es keine Änderungen gibt, wenn keine Änderungen an den Dateien im Repository vorgenommen wurden.