Certains fichiers ne doivent jamais partir
Un dossier de projet contient plus que du code. Il contient des journaux, des copies que fabrique un programme et parfois un mot de passe. Un mot de passe enregistré une fois peut être lu par tous ceux qui clonent le projet.
Un fichier nommé .gitignore dit à Git quels fichiers laisser tranquilles. Dans cette leçon, vous en écrivez un et vous réparez une erreur.
À la fin de cette leçon
Remarque
Je peux garder des fichiers hors de Git avec un fichier .gitignore.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Ignorer | laisser un fichier hors de Git, exprès | |
| Motif | une ligne qui désigne les fichiers à ignorer | *.log |
| Suivi | déjà dans un commit, donc surveillé par Git | |
| Non suivi | dans aucun commit pour l’instant | |
| Secret | un texte, comme un mot de passe, qui doit rester privé |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un motif désigne les fichiers à ignorer
Mettez dans le projet un fichier nommé .gitignore. Chaque ligne est un motif. Git laisse de côté les fichiers qui correspondent : ils restent non suivis et n’apparaissent plus comme nouveaux.
Le point au début fait partie du nom. Enregistrez aussi le .gitignore dans un commit, pour que tous ceux qui clonent aient les mêmes règles.
Exemple travaillé : quatre sortes de motifs
| Motif | Ce qu’il ignore | Exemple |
|---|---|---|
| `cle.txt` | un fichier qui porte exactement ce nom | cle.txt |
| `*.log` | tout fichier qui finit par .log | caisse.log |
| `build/` | un dossier entier | build/sortie.txt |
| `!garder.log` | une exception : celui-ci n’est pas ignoré | garder.log |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Créer un dépôt nommé boutique
git init -b main boutiqueAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Écrire un fichier de deux prix
printf 'Cafe 1.50\nThe 1.20\n' > boutique/prix.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Écrire un faux mot de passe
printf 'mot_de_passe=abc123\n' > boutique/cle.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Écrire un fichier journal
printf 'caisse ouverte\n' > boutique/caisse.logAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Choisir les prix et la clé, par erreur
git -C boutique add prix.txt cle.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Les enregistrer
git -C boutique commit -m "Ajouter les prix et la cle"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Écrire le fichier d’exclusions
printf '*.log\ncle.txt\n' > boutique/.gitignoreAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Voir ce que Git ignore
git -C boutique status --short --ignoredAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Demander quel motif correspond
git -C boutique check-ignore -v caisse.logAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Ignorer n’annule pas un commit
Git n’ignore que les fichiers qu’il ne suit pas encore. cle.txt est déjà dans un commit : il est suivi, et le nouveau motif ne change rien pour lui.
Pour cesser de le suivre, lancez git rm --cached. L’option --cached retire le fichier de Git et le garde dans votre dossier. Sans elle, le fichier est aussi effacé du disque.
Changer le mot de passe dans le fichier
printf 'mot_de_passe=xyz789\n' > boutique/cle.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Voir ce que Git dit maintenant
git -C boutique status --shortAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Ne plus suivre la clé, la garder
git -C boutique rm --cached cle.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Choisir le fichier d’exclusions
git -C boutique add .gitignoreAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Enregistrer les deux changements
git -C boutique commit -m "Ignorer les journaux et ne plus suivre cle.txt"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Trouver chaque commit qui contient la clé
git -C boutique --no-pager log --format=%s -- cle.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
On croit souvent qu’ignorer un fichier, ou le retirer de Git, le cache pour toujours. Ce n’est pas vrai. Le premier commit contient encore l’ancien mot de passe : quiconque a l’historique peut le lire. Un secret enregistré est un secret perdu : changez le mot de passe.