Tester les fichiers texte par rapport aux fichiers binaires
Dans cette étape, nous allons voir comment Git gère les modifications dans les fichiers texte par rapport aux fichiers binaires. Cela mettra en évidence pourquoi les capacités de comparaison de Git sont principalement conçues pour le texte.
Tout d'abord, assurez-vous que vous êtes dans le répertoire de votre projet :
cd ~/project/my-time-machine
Nous avons déjà notre fichier message.txt
(fichier texte) et notre fichier binary_file
. Modifions à nouveau message.txt
:
echo "Another line for the future" >> message.txt
Maintenant, ajoutons les deux fichiers à la zone de préparation (staging area) et validons-les. Tout d'abord, ajoutons les fichiers :
git add message.txt binary_file
Vérifions l'état pour confirmer que les deux fichiers sont dans la zone de préparation :
git status
Vous devriez voir les deux fichiers répertoriés sous "Changes to be committed" (Modifications à valider) :
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: message.txt
new file: binary_file
Maintenant, validons ces modifications :
git commit -m "Add binary file and update message"
Vous verrez une sortie confirmant la validation, y compris les modifications apportées aux deux fichiers :
[master ...] Add binary file and update message
2 files changed, 2 insertions(+)
create mode 100644 binary_file
Maintenant, apportons une petite modification au fichier binary_file
. Nous pouvons ajouter un seul octet à ce fichier :
echo -n "a" >> binary_file
Le drapeau -n
empêche echo
d'ajouter un caractère de nouvelle ligne.
Vérifions à nouveau l'état :
git status
Git indiquera que le fichier binary_file
a été modifié :
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)
Maintenant, essayons de voir la différence en utilisant git diff
:
git diff
Au lieu de montrer les modifications ligne par ligne, Git vous indiquera probablement que le fichier binaire est différent :
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
Cette sortie montre clairement que Git ne tente pas d'afficher les modifications détaillées dans le fichier binaire. Il indique simplement que les fichiers sont différents. C'est une différence clé dans la façon dont Git gère les fichiers texte par rapport aux fichiers binaires. Pour les fichiers texte, Git peut vous montrer exactement quelles lignes ont été ajoutées, supprimées ou modifiées. Pour les fichiers binaires, il ne peut seulement vous indiquer qu'une modification s'est produite.
Cette étape démontre pourquoi les puissants outils de comparaison et de fusion de Git sont les plus efficaces avec le contenu basé sur le texte, qui est courant dans le code source et les fichiers de configuration.