J'ai une structure similaire à la suivante:
/root/
/root/data/
/root/data/script.php
/root/data/some.json
/root/data/feature/one.json
/root/data/feature/two.json
/root/data/other-feature/one.json
/root/data/other-feature/important-script.php
J'aimerais que git ignore tout .json
fichiers sous le chemin '/ data/...', mais '/ data /' contient parfois des sous-répertoires.
Ma compréhension est qu'un simple data/*.json
dans gitignore ne correspondra qu'à un seul répertoire, car *
ne correspond pas à /
, comme indiqué sur http://git-scm.com/docs/gitignore , "Format du modèle", puce n ° 6:
Sinon, git traite le modèle comme un glob Shell utilisable par fnmatch (3) avec l'indicateur FNM_PATHNAME: les caractères génériques dans le modèle ne correspondront pas à un/dans le chemin. Par exemple, "Documentation/*. Html" correspond à "Documentation/git.html" mais pas à "Documentation/ppc/ppc.html" ou "tools/perf/Documentation/perf.html".
Existe-t-il un moyen simple de le faire, ou dois-je ajouter activement des fichiers gitignore dans chaque sous-répertoire, explicitement?
J'ai récemment écrit un article sur ce problème. Voir ici .
Fondamentalement, ce dont vous avez besoin est d'en mettre un .gitignore
avec *.json
dans le /data/
répertoire.
[~ # ~] upd [~ # ~] : depuis git 1.8.4 ( 1.8.2 si vous utilisez msysgit), il est possible d'utiliser des motifs à double étoile, comme /data/**/*.json
vous pouvez placer data/**/*.json
dans votre .gitignore
dans /root
répertoire pour éviter plusieurs .gitignore
fichiers dans différents répertoires
**/
- correspond à tout nombre de sous-répertoires (y compris le courant)
exemple: data/**/*.json
l'enregistrement ignorera data/1.json
, data/subfolder/2.json
, data/../../3.json
Ce modèle fonctionne pour moi pour le sous-dossier de données en ignorant uniquement les fichiers png et jpg:
**/data/**/*.png
**/data/**/*.jpg