Aller au contenu principal

Suivre les modifications

  • Comprendre précisément ce qui a changé dans un fichier avant de le committer.
  • Ignorer volontairement certains fichiers avec .gitignore.
  • Corriger une erreur : message de commit, ou fichier ajouté par erreur.

Petite vérification​

Avant de commencer, vérifiez si vous savez encore...

  1. transformer un dossier en dépôt Git, en ligne de commandes
  2. enregistrer un fichier modifié dans un nouveau commit, en 2 commandes
  3. afficher l'historique des commits d'un dépôt
📌 Réponse attendue

Notions théoriques​

git diff : voir les changements avant de committer​

git status indique quels fichiers ont changé, mais pas ce qui a changé à l'intérieur. C'est le rôle de git diff :

git diff

Cette commande affiche, ligne par ligne, les différences entre le répertoire de travail et le dernier commit : les lignes supprimées (précédées d'un -) et les lignes ajoutées (précédées d'un +).

info

Une fois qu'un fichier a été ajouté avec git add, git diff n'affiche plus rien pour ce fichier : pour comparer la zone de préparation au dernier commit, il faut utiliser git diff --staged.

.gitignore : exclure certains fichiers du suivi​

Certains fichiers ne doivent jamais être suivis par Git : fichiers temporaires, mots de passe, dossiers générés automatiquement (node_modules/, caches...). On les liste dans un fichier .gitignore, à la racine du dépôt :

# .gitignore
*.log
notes_perso.txt
cache/

Chaque ligne est un motif : un nom de fichier exact, une extension (*.log), ou un dossier entier (cache/).

attention

.gitignore n'empêche pas de suivre un fichier déjà ajouté à Git par le passé. Il faut d'abord le retirer du suivi avec git rm --cached <fichier>, puis l'ajouter à .gitignore.

Corriger une erreur​

  • Modifier le message du dernier commit (avant tout partage sur GitHub) :

    git commit --amend -m "Nouveau message plus clair"
  • Retirer un fichier de la zone de préparation, sans perdre la modification :

    git restore --staged <fichier>
attention

git commit --amend réécrit le dernier commit : ne l'utilisez jamais sur un commit déjà partagé avec d'autres personnes (nous verrons pourquoi lorsque nous aborderons le travail à plusieurs).

Exemple pratique​

Reprenons le dépôt mon-portfolio de la séance précédente. Ajoutons une feuille de style :

echo "body { font-family: sans-serif; }" > style.css
git status

style.css apparaît comme fichier non suivi. Ajoutons aussi un fichier de brouillon que nous ne voulons jamais suivre :

echo "idées en vrac, pas terminé" > brouillon.txt

Créons .gitignore pour exclure ce brouillon :

echo "brouillon.txt" > .gitignore
git status

brouillon.txt a disparu de la liste des fichiers non suivis ! Committons maintenant nos fichiers utiles :

git add style.css .gitignore
git diff --staged
git commit -m "Ajoute une feuille de style et .gitignore"

Imaginons que le message contienne une faute de frappe, et que ce commit n'ait pas encore été partagé :

git commit --amend -m "Ajoute la feuille de style et le fichier .gitignore"

Test de mémorisation/compréhension​


Que montre git diff, contrairement à git status ?


Une fois un fichier ajouté avec git add, quelle commande permet de voir ses changements par rapport au dernier commit ?


À quoi sert un fichier .gitignore ?


Le fait d'ajouter un fichier à .gitignore retire-t-il automatiquement du suivi un fichier déjà commité ?


Que permet git commit --amend ?


Pourquoi faut-il éviter d'utiliser git commit --amend sur un commit déjà partagé avec d'autres ?


Que fait git restore --staged <fichier> ?


TP pour réfléchir et résoudre des problèmes​

Vous allez reprendre le dépôt mon-cv créé lors de la séance précédente, pour y ajouter une feuille de style tout en excluant un fichier de brouillon.

Étape 1 — Ajouter une feuille de style​

Étape 2 — Exclure un brouillon​

Créez un fichier brouillon.txt contenant "à ne pas publier", puis excluez-le du suivi Git.


Bonne pratique - Committer .gitignore dès le début

Créez et committez votre .gitignore dès le premier commit d'un projet, avant d'ajouter des fichiers sensibles ou temporaires par erreur. Le retirer après coup est possible, mais plus compliqué.

Étape 3 — Committer et vérifier avant de valider​


Bonne pratique - Toujours relire avant de committer

Prenez l'habitude de lancer git diff --staged juste avant chaque git commit : c'est la dernière occasion de repérer une erreur (un fichier oublié, une ligne de débogage laissée par mégarde) avant qu'elle n'entre dans l'historique.