Test von Text- vs. Binärdateien
In diesem Schritt werden wir sehen, wie Git Änderungen in Textdateien im Vergleich zu Binärdateien behandelt. Dies wird verdeutlichen, warum Git's Diff-Fähigkeiten in erster Linie für Text konzipiert sind.
Zunächst stellen Sie sicher, dass Sie sich in Ihrem Projektverzeichnis befinden:
cd ~/project/my-time-machine
Wir haben bereits unsere message.txt
(Textdatei) und binary_file
. Lassen Sie uns eine weitere Änderung an message.txt
vornehmen:
echo "Another line for the future" >> message.txt
Jetzt fügen wir beide Dateien in die Staging-Area ein und committen sie. Zuerst fügen wir die Dateien hinzu:
git add message.txt binary_file
Überprüfen Sie den Status, um sicherzustellen, dass beide Dateien in der Staging-Area sind:
git status
Sie sollten beide Dateien unter "Changes to be committed" aufgeführt sehen:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: message.txt
new file: binary_file
Jetzt committen wir diese Änderungen:
git commit -m "Add binary file and update message"
Sie werden eine Ausgabe sehen, die den Commit bestätigt und die Änderungen an beiden Dateien enthält:
[master ...] Add binary file and update message
2 files changed, 2 insertions(+)
create mode 100644 binary_file
Jetzt machen wir eine kleine Änderung an der binary_file
. Wir können ihr ein einzelnes Byte anhängen:
echo -n "a" >> binary_file
Das -n
-Flag verhindert, dass echo
ein Zeilenumbruchzeichen hinzufügt.
Überprüfen Sie erneut den Status:
git status
Git wird anzeigen, dass binary_file
geändert 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: binary_file
no changes added to commit but untracked files present (use "git add" to track)
Jetzt versuchen wir, den Unterschied mit git diff
anzuzeigen:
git diff
Anstatt Zeilenweise Änderungen anzuzeigen, wird Git Ihnen wahrscheinlich mitteilen, dass sich die Binärdatei unterscheidet:
warning: LF will be replaced by CRLF in binary_file.
The file has no newline at the end of the file.
diff --git a/binary_file b/binary_file
index ... ...
Binary files a/binary_file and b/binary_file differ
Diese Ausgabe zeigt deutlich, dass Git nicht versucht, die detaillierten Änderungen innerhalb der Binärdatei anzuzeigen. Es gibt einfach an, dass sich die Dateien unterscheiden. Dies ist ein wesentlicher Unterschied in der Art und Weise, wie Git Text- im Vergleich zu Binärdateien behandelt. Bei Textdateien kann Git Ihnen genau anzeigen, welche Zeilen hinzugefügt, entfernt oder geändert wurden. Bei Binärdateien kann es Ihnen nur mitteilen, dass eine Änderung stattgefunden hat.
Dieser Schritt zeigt, warum Git's leistungsstarke Diff- und Merge-Tools am effektivsten mit textbasiertem Inhalt sind, der in Quellcode und Konfigurationsdateien häufig vorkommt.