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.) pendant son exécution, mais je ne veux pas que ceux-ci soient suivis.
Je suis conscient que je pourrais (devrait peut-être) faire en sorte que tous ces fichiers soient placés dans un sous-dossier séparé dans le projet, car je pourrais alors simplement ignorer le dossier.
Cependant, existe-t-il un moyen possible 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 avec Git? Quelque chose comme
# Ignore everything
*
# But not these files...
script.pl
template.latex
# etc...
Réponses:
la source
wp/
) mais je ne veux PAS ignorer certains fichiers au fond de ce dossier (par exemplewp/path/to/some/location/*
). La seule façon de le faire fonctionner était de le fairegit add -f wp/path/to/some/location/*
!*/
exception de simont!*/
fait toute la différence dans mes tentatives futiles de faire en sorte qu'un.gitignore
fichier fonctionne. Merci beaucoup.Si vous souhaitez 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 sauf de pippo / pluto / paperino.xml
.gitignore
la source
foo
et qui nefoo/*
sont pas les mêmes. Pour que cela fonctionne, vous devez utiliserfoo/*
le dossier de baseVous souhaitez utiliser à la
/*
place*
ou*/
dans la plupart des casL'utilisation
*
est valide, mais elle fonctionne récursivement. Il ne cherchera plus dans les répertoires à partir de ce moment. Les gens recommandent d'utiliser!*/
à nouveau la liste blanche des répertoires, mais il est en fait préférable de mettre sur liste noire le dossier de plus haut niveau avec/*
Le code ci - dessus ne tiendrait pas compte de tous les fichiers à l' exception
.gitignore
,README.md
,folder/a/file.txt
,folder/a/b1/
etfolder/a/b2/
et tout le contenu de ces deux derniers dossiers. (Et les fichiers.DS_Store
et*.log
seraient ignorés dans ces dossiers.)Évidemment, je pourrais faire par exemple
!/folder
ou!/.gitignore
trop.Plus d'informations: http://git-scm.com/docs/gitignore
la source
.DS_Store
fichiers ne sont pas ignorés, mais via la ligne de commande, ce n'est pas un problème. Pour contourner cela, j'ai dû déplacer les**/.DS_Store
règles ci - dessous./*
ensuite!/nested/folder/*
(ou l'équivalent!/nested/folder
) sans faire!/nested/
ou d'!/nested
abord! (et probablement/nested/*
entre les deux). Une astuce à retenir est que si vous ajoutez à la liste blanche un sous-dossier profondément imbriqué, vous devez noircir complètement les enfants dans chaque sous-dossier, et ces listes noires se termineront par la "barre oblique" ...Un peu plus précis:
Exemple: Ignorez tout
webroot/cache
- mais gardezwebroot/cache/.htaccess
.Remarquez la barre oblique (/) après le
cache
dossier:ÉCHOUE
TRAVAUX
la source
la source
Pour ignorer certains fichiers d'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" faites attention à la commande .
Vous devez nier ce que vous voulez d'abord.
ÉCHOUE
application/*
!application/config/*
!application/index.php
TRAVAUX
!application/config/*
!application/index.php
application/*
la source
git status
vérifier si vos changements.gitignore
fonctionnent comme prévugit status
ne va pas vous dire ce qu'il regarde et ce qui est ignoré, alors comment savoir si cela fonctionne?Vous pouvez utiliser
git config status.showUntrackedFiles no
et tous les fichiers non suivis vous seront cachés. Voirman git-config
pour plus de détails.la source
Pour exclure un dossier de .gitignore, les opérations suivantes peuvent être effectuées.
Cela ignorera tous les fichiers / sous-dossiers à l'intérieur à l'
bower_components
exception de/highcharts
.la source
Il y a un tas de questions similaires à ce sujet, donc je posterai ce que j'ai écrit avant:
La seule façon de faire fonctionner cela sur ma machine était de le faire de cette façon:
Remarquez comment vous devez autoriser explicitement le contenu pour chaque niveau que vous souhaitez inclure. Donc, si j'ai des sous-répertoires 5 sous les thèmes, je dois encore le préciser.
Ceci est du commentaire de @ Yarin ici: https://stackoverflow.com/a/5250314/1696153
Ces sujets étaient 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 traces et d'erreurs!
la source
J'ai eu un problème avec le sous-dossier.
Ne marche pas:
Travaux:
la source
J'ai essayé toutes les réponses ci-dessus, mais aucune n'a fonctionné pour moi. Après avoir lu la documentation de gitignore ( ici ), j'ai découvert que si vous excluez d'abord un dossier, les noms de fichiers dans le sous-dossier ne sont pas indexés. Donc, si vous utilisez le point d'exclamation par la suite pour inclure un fichier, il ne se trouve pas dans l'index et n'est donc pas inclus dans votre client git.
C'était le moyen de trouver la solution. J'ai commencé par ajouter des exceptions pour tous les sous-dossiers de mon arborescence de dossiers pour le faire fonctionner, ce qui est un sacré travail. Par la suite, j'ai pu compacter la configuration détaillée dans la configuration ci-dessous, ce qui est un peu contraire à la documentation.
.Gitignore de travail:
En conséquence, je vois dans mon client git que seuls les deux fichiers à l'intérieur du dossier Pro / 3rdparty / domain / modulename / sont mis en scène pour le prochain commit, et c'est exactement ce que je cherchais.
Et si vous devez ajouter à la liste blanche plusieurs sous-dossiers du même dossier, regroupez les lignes de point d'exclamation sous l'instruction exclude comme ceci:
Sinon, cela ne fonctionnera pas comme prévu.
la source
C'est ce qui a fonctionné pour moi, je voulais engager un seul plugin Cordova dans le repo:
la source
Je sais que je suis en retard pour la fête, mais voici ma réponse.
Comme l'a dit @Joakim, pour ignorer un fichier, vous pouvez utiliser quelque chose comme ci-dessous.
mais si le fichier se trouve dans des répertoires imbriqués, il est un peu difficile d'écrire manuellement les règles.
Par exemple, si nous voulons ignorer tous les fichiers d'un
git
projet, mais pas ceuxa.txt
qui se trouvent dansaDir/anotherDir/someOtherDir/aDir/bDir/cDir
. Ensuite, notre.gitignore
sera quelque chose comme çaLe
.gitignore
fichier donné ci-dessus sautera tous les répertoires et fichiers sauf!aDir/anotherDir/someOtherDir/aDir/bDir/cDir/a.txt
Comme vous l'avez peut-être remarqué, il est difficile de définir ces règles.
Pour résoudre cet obstacle, j'ai créé une application console simple nommée git-do-not-ignore qui générera les règles pour vous. J'ai hébergé le projet dans github avec des instructions détaillées.
Exemple d'utilisation
Production
Il existe également une version Web simple disponible ici
Je vous remercie.
la source
J'ai Jquery et Angular de bower. Bower les a installés dans
Le jquery minimisé est à l'intérieur du
dist
répertoire et angular est à l'intérieur duangular
répertoire. Je n'avais besoin que de fichiers réduits pour être validés sur github. Quelques manipulations avec .gitignore et c'est ce que j'ai réussi à conjurer ...J'espère que quelqu'un pourrait trouver cela utile.
la source
Voici comment je l'ai fait:
Utilisez
gig status -u
pour afficher les fichiers individuels dans les répertoires non suivis de manière récursive - avecgit status
vous ne verriez que les dossiers, ce qui pourrait vous induire en erreur en pensant que tout ce qui s'y trouve a été suivila source
Solution simple si vous devez tout ignorer sauf quelques fichiers et quelques dossiers racine :
La magie est
/*
(comme décrit ci-dessus), elle ignore tout dans le dossier (racine) MAIS PAS récursivement.la source
J'ai également eu quelques problèmes avec la négation de fichiers uniques. J'ai pu les valider, mais mon IDE (IntelliJ) s'est toujours plaint des fichiers ignorés, qui sont suivis.
Affichage des deux fichiers, que j'ai exclus de cette façon:
En fin de compte, cela a fonctionné pour moi:
La clé était d'abord la négation du dossier
typo3conf/
.De plus, il semble que l'ordre des déclarations n'a pas d'importance . Au lieu de cela, vous devez annuler explicitement tous les sous-dossiers, avant de pouvoir annuler des fichiers uniques.
Le dossier
!public/typo3conf/
et le contenu du dossierpublic/typo3conf/*
sont deux choses différentes pour .gitignore.Excellent fil! Ce problème m'a dérangé pendant un certain temps;)
la source
Jusqu'à présent, rien n'a fonctionné pour moi car j'essayais d'ajouter un pot de lib.
Cela n'a pas fonctionné:
Cela a fonctionné:
la source
J'ai ce travail
la source
Avait le même problème que OP mais aucune des 10 meilleures réponses votées n'a vraiment fonctionné .
J'ai finalement découvert ce qui suit
Mauvaise syntaxe:
Syntaxe correcte:
Explication de la page de manuel de gitignore :
Exemple étendu:
$ arbre.
$ cat .gitignore
$ git status --untracked-files --ignored
la source
Essentiel
Et probablement inclure:
Référence
Depuis https://git-scm.com/docs/gitignore :
la source
Il me semble avoir trouvé quelque chose qui a fonctionné pour moi et que personne d'autre n'a mentionné.
Fondamentalement, cela semble empêcher un sous-répertoire d'être ignoré, vous devez avoir deux entrées, une pour le sous-répertoire lui-même
!subdir/
, puis une autre qui s'étend à tous les fichiers et dossiers sous-jacents!subdir/**/*
la source