Le fichier .gitignore

Ce qu'on ne versionne pas (compilé, dépendances, secrets, fichiers d'éditeur) et la syntaxe des motifs de .gitignore : étoile, barre oblique, double étoile, point d'exclamation, et le cas d'un fichier déjà suivi.

  • 20 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Fichier .gitignore : de quoi s'agit-il ?

    Voir la réponse

    Fichier texte, versionné avec le projet, qui liste des motifs de noms que Git doit laisser non suivis.

    Il n'a d'effet que sur les fichiers pas encore suivis. Comme il est versionné, toute l'équipe partage les mêmes règles.

  • .gitignore contient *.class, /build/ et !Main.class. Quelle affirmation est juste ?

    • src/Main.class n'est pas ignoré, build/Main.class l'est
    • build/Main.class n'est plus ignoré à cause de !Main.class
    • src/Main.class est ignoré, un ! ne vaut qu'à la racine
    • Aucun .class n'est ignoré, le ! annule *.class
    Voir la réponse

    src/Main.class n'est pas ignoré, build/Main.class l'est

    !Main.class ré-inclut les fichiers Main.class en dehors de build. Mais dans build/, c'est le dossier entier qui est ignoré, et Git ne descend pas dedans : rien ne peut y être ré-inclus.

  • Les fichiers que le projet peut …, comme les binaires compilés ou les dépendances téléchargées, ne se versionnent pas.

    Voir la réponse

    Les fichiers que le projet peut régénérer, comme les binaires compilés ou les dépendances téléchargées, ne se versionnent pas.

    Ils alourdissent le dépôt et créent des conflits à chaque compilation. Le code source et le fichier de dépendances suffisent à les reproduire.

  • Motif avec une étoile (*) : de quoi s'agit-il ?

    Voir la réponse

    Remplace n'importe quelle suite de caractères dans un nom de fichier, sans jamais traverser un séparateur de dossier.

    *.class ignore tous les fichiers .class, mais docs/*.pdf n'atteint que les fichiers directement dans docs, pas ceux des sous-dossiers.

  • Tu ajoutes .env au .gitignore, mais git status le montre encore comme modifié. Que fais-tu pour qu'il soit enfin ignoré, en le gardant sur ton disque ?

    • git rm .env puis un commit
    • git add .gitignore puis un commit
    • git restore .env pour qu'il redevienne non suivi
    • git rm --cached .env puis un commit
    Voir la réponse

    git rm --cached .env puis un commit

    Un .gitignore ne concerne que les fichiers non suivis ; .env était déjà suivi. --cached le retire de l'index sans l'effacer, alors que git rm .env l'effacerait aussi du disque, et valider le .gitignore ne change rien à un fichier suivi. Attention : son contenu reste dans l'historique, donc un secret doit être changé.