suivi - windows git ignore




Faire.gitignore ignorer tout sauf quelques fichiers (8)

Je comprends qu'un fichier .gitignore masque les fichiers spécifiés du contrôle de version de Git. 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 qu'ils soient suivis.

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

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

# Ignore everything
*

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

Un préfixe facultatif ! 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 remplacera 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/*

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

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

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 dans le répertoire dist et angulaire dans le répertoire angular . Je n'avais besoin que de fichiers minimisés pour être validés sur github. Certains falsification de .gitignore et c'est ce que j'ai réussi à conjurer ...

/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.


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

!app/

app/*
!app/bower_components/

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

Ceci ignorera tous les fichiers / sous-dossiers à l'intérieur de bower_components exception de /highcharts .


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

Un peu plus spécifique:

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

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

ÉCHOUE

webroot/cache*
!webroot/cache/.htaccess

TRAVAUX

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

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

L'utilisation de * est valide, mais elle fonctionne récursivement. Il ne se penchera plus sur les annuaires. Les gens recommandent d'utiliser !*/ Pour les répertoires de la liste blanche à nouveau, mais il est préférable de mettre à jour 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 .gitignore , README.md , folder/a/b1/ et folder/a/b2/ et tout contenu dans ces deux dossiers. (Et les fichiers .DS_Store et *.log seraient ignorés dans ces dossiers.)

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

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


# ignore these
*
# except foo
!foo




gitignore