Question Faire .gitignore ignorer tout sauf quelques fichiers


Je comprends qu'un fichier .gitignore masque les fichiers spécifiés de la version de Git contrôle. J'ai un projet (LaTeX) qui génère beaucoup de fichiers supplémentaires (.auth, .dvi, .pdf, logs, etc) en cours d'exécution, mais je ne veux pas que ceux-ci soient suivis.

Je suis conscient que je pourrais (peut-être devrais) faire en sorte que tous ces fichiers sont mis dans un sous-dossier séparé dans le projet, puisque je pouvais alors ignorer le dossier.

Cependant, existe-t-il un moyen pratique de conserver les fichiers de sortie à la racine du arbre de projet et utiliser .gitignore pour ignorer tout sauf les fichiers que je suis suivi avec Git? Quelque chose comme

# Ignore everything
*

# But not these files...
script.pl
template.latex
# etc...

1168
2018-06-12 15:04


origine


Réponses:


Un préfixe optionnel ! ce qui nie le modèle; tout fichier correspondant exclu par   un motif précédent sera à nouveau inclus. Si un motif inversé correspond,   cela va remplacer les sources de modèles de priorité inférieure.

# Ignore everything
*

# But not these files...
!.gitignore
!script.pl
!template.latex
# etc...

# ...even if they are in subdirectories
!*/

# if the files to be tracked are in subdirectories
!*/a/b/file1.txt
!*/a/b/c/*

1702
2018-06-12 15:07



Si vous voulez ignorer tout le contenu d'un répertoire sauf un fichier à l'intérieur, vous pouvez écrire une paire de règles pour chaque répertoire dans le chemin du fichier. Par exemple, .gitignore pour ignorer le dossier pippo à l'exception de pippo / pluto / paperino.xml

.gitignore

pippo/*
!pippo/pluto
pippo/pluto/*
!pippo/pluto/paperino.xml

486
2018-05-01 12:31



Vous voulez utiliser /* au lieu de * ou */ dans la plupart des cas

En utilisant * est valide, mais cela fonctionne récursivement. Il ne se penchera plus sur les annuaires. Les gens recommandent d'utiliser !*/ pour ajouter des répertoires à la liste blanche, mais il est préférable de mettre sur liste noire le dossier de plus haut niveau avec /*

# Blacklist files/folders in same directory as the .gitignore file
/*

# Whitelist some files
!.gitignore
!README.md

# Ignore all files named .DS_Store or ending with .log
**/.DS_Store
**.log

# Whitelist folder/a/b1/ and folder/a/b2/
# trailing "/" is optional for folders, may match file though.
# "/" is NOT optional when followed by a *
!folder/
folder/*
!folder/a/
folder/a/*
!folder/a/b1/
!folder/a/b2/

Le code ci-dessus ignorerait tous les fichiers sauf pour .gitignore, README.md, folder/a/b1/ et folder/a/b2/ et tout ce contenu dans ces deux dossiers. (Et .DS_Store et *.log les fichiers seraient ignorés dans ces dossiers.)

Évidemment, je pourrais faire, par exemple. !/folder ou !/.gitignore aussi.

Plus d'informations: http://git-scm.com/docs/gitignore


139
2018-04-29 00:31



Un peu plus spécifique:

Exemple: Ignorer tout dans webroot/cache - mais gardez webroot/cache/.htaccess.

Notez la barre oblique (/) après le cache dossier:

ÉCHOUE

webroot/cache*
!webroot/cache/.htaccess

TRAVAUX

webroot/cache/*
!webroot/cache/.htaccess

57
2017-08-13 13:23



# ignore these
*
# except foo
!foo

49
2018-06-12 15:06



Pour ignorer certains fichiers dans un répertoire, vous devez le faire dans le bon ordre:

Par exemple, ignorez tout dans le dossier "application" sauf index.php et le dossier "config" prêter attention à la commande.

Vous devez annuler ce que vous voulez en premier.

ÉCHOUE

application/*

!application/config/*

!application/index.php

TRAVAUX

!application/config/*

!application/index.php

application/*


23
2017-08-09 08:39



Vous pouvez utiliser git config status.showUntrackedFiles no et tous les fichiers non suivis seront cachés à vous. Voir man git-config pour plus de détails.


18
2018-06-12 15:20



Pour exclure le dossier de .gitignore, ce qui suit peut être fait.

!app/

app/*
!app/bower_components/

app/bower_components/*
!app/bower_components/highcharts/

Cela va ignorer tous les fichiers / sous-dossiers à l'intérieur bower_components à l'exception de /highcharts.


12
2017-11-10 14:21



Il y a un tas de questions similaires à ce sujet, donc je vais poster ce que j'ai écrit auparavant:

La seule façon de faire fonctionner ça sur ma machine était de faire comme ça:

# Ignore all directories, and all sub-directories, and it's contents:
*/*

#Now ignore all files in the current directory 
#(This fails to ignore files without a ".", for example 
#'file.txt' works, but 
#'file' doesn't):
*.*

#Only Include these specific directories and subdirectories and files if you wish:
!wordpress/somefile.jpg
!wordpress/
!wordpress/*/
!wordpress/*/wp-content/
!wordpress/*/wp-content/themes/
!wordpress/*/wp-content/themes/*
!wordpress/*/wp-content/themes/*/*
!wordpress/*/wp-content/themes/*/*/*
!wordpress/*/wp-content/themes/*/*/*/*
!wordpress/*/wp-content/themes/*/*/*/*/*

Remarquez comment vous devez autoriser explicitement le contenu pour chaque niveau que vous souhaitez inclure. Donc, si j'ai des sous-répertoires 5 profonds sous les thèmes, j'ai encore besoin de l'épeler.

Ceci est tiré du commentaire de @ Yarin ici: https://stackoverflow.com/a/5250314/1696153

Ce sont des sujets utiles:

J'ai aussi essayé

*
*/*
**/**

et **/wp-content/themes/**

ou /wp-content/themes/**/*

Rien de tout cela n'a fonctionné pour moi non plus. Beaucoup de sentiers et d'erreurs!


9
2018-04-29 23:40



J'ai Jquery et Angular de bower. Bower les a installés dans

/public_html/bower_components/jquery/dist/bunch-of-jquery-files
/public_html/bower_components/jquery/src/bunch-of-jquery-source-files
/public_html/bower_components/angular/angular-files

La jquery minimisée est à l'intérieur du dist répertoire et angulaire est à l'intérieur angular annuaire. Je n'avais besoin que de fichiers minimisés pour être validés sur github. Certains trafiquer avec .gitignore et c'est ce que j'ai réussi à évoquer ...

/public_html/bower_components/jquery/*
!public_html/bower_components/jquery/dist
/public_html/bower_components/jquery/dist/*
!public_html/bower_components/jquery/dist/jquery.min.js
/public_html/bower_components/angular/*
!public_html/bower_components/angular/angular.min.js

J'espère que quelqu'un pourrait trouver cela utile.


6
2018-01-27 20:57



C'est ce qui a fonctionné pour moi, je voulais commettre un seul plugin Cordova au repo:

...
plugins/*
!plugins/cordova-plugin-app-customization

6
2018-04-30 18:58