Problème → Solution ~1 min de lecture

Réinclure un fichier dans un dossier ignoré

Git refuse d’ajouter build/schema.json malgré une exception dans le .gitignore ? Vérifiez la règle qui exclut son dossier parent.

Deux colonnes comparent les règles d’un .gitignore à la racine du dépôt. À gauche, /build/ puis !/build/schema.json excluent toujours le dossier parent : le fichier reste ignoré. À droite, /build/* puis !/build/schema.json laissent le dossier accessible : schema.json peut être ajouté.
Le diagramme montre pourquoi une exception échoue lorsque le dossier parent est ignoré, et comment ignorer son contenu permet de garder un fichier.

Un fichier non suivi, build/schema.json, reste impossible à ajouter malgré une exception dans le .gitignore. Avec les règles /build/ puis !/build/schema.json, le problème vient du dossier parent : Git ne peut pas réinclure un fichier si ce dossier reste exclu.

La commande git check-ignore -v build/schema.json permet de vérifier la règle responsable. Elle indique le fichier de configuration, le numéro de ligne et la règle applicable : ici, /build/.

Dans le .gitignore à la racine du dépôt, remplacez ces règles par /build/* puis !/build/schema.json. La première ignore le contenu direct du dossier sans exclure le dossier lui-même. La seconde peut alors réinclure le fichier, qui devient ajoutable avec git add build/schema.json.

Pour garder un fichier dans un dossier ignoré, ignorez le contenu du dossier plutôt que le dossier lui-même.

Dans le même esprit

À lire ensuite