Faire .gitignore ignorent tout, à l'exception de quelques fichiers
Je comprends qu'un .gitignore fichier capes fichiers spécifiés à partir de la version Git
de contrôle. J'ai un projet (LaTeX) qui génère un grand nombre de fichiers supplémentaires (.auth,
.dvi, .pdf, journaux, etc), car il fonctionne, mais je ne veux pas de ces à suivre.
Je suis conscient que je pourrais (peut-être devrait) faire en sorte que tous ces fichiers sont placés dans un
sous-dossier distinct dans le projet, puisque je ne puis ignorer le dossier.
Cependant, est-il possible de garder les fichiers de sortie dans la racine de la
arborescence du projet et de l'utilisation .gitignore à 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...
- Double de stackoverflow.com/q/9162919/321973 (je sais que c'est plus récente, mais la réponse n'est plus correct). En fait cette réponse c'est probablement le meilleur
Vous devez vous connecter pour publier un commentaire.
wp/
) mais je veux PAS ignorer certains fichiers de profondeur dans ce dossier (par exemple,wp/path/to/some/location/*
). La seule façon que je pourrais l'obtenir pour fonctionner est en faisantgit add -f wp/path/to/some/location/*
!*/
exception!*/
exception!*/
fait toute la différence dans mes vaines tentatives pour disputer un.gitignore
fichier de travail. Je vous remercie beaucoup.*
et!*/
utiliser juste/*
, c'est l'équivalent, et fait plus de sens dans mon esprit.wp/* !wp/path/to/some/location/
. Dans mon cas,wp/* !wp/wp-content/
!*/a/b/file1.txt
, vous devriez essayer ce!a/b/file1.txt
. Le premier correspond uniquement des chemins tels que1/a/b/file1.txt
, mais pas des chemins tels quea/b/file1.txt
.!*/
quand il y a une grande structure de dossier dans le repo (parce que git devez analyser chaque dossier, seulement ignorer les fichiers à l'intérieur)Si vous souhaitez ignorer tout le contenu d'un répertoire à l'exception d'un fichier à l'intérieur, vous pouvez écrire une paire de règles pour chaque répertoire dans le chemin d'accès au fichier.
Par exemple .gitignore à ignorer les pippo dossier, à l'exception de pippo/pluto/paperino.xml
.gitignore
foo
etfoo/*
sont pas sur le même. Pour que cela fonctionne, vous besoin pour utiliserfoo/*
pour le dossier de base!.gitignore
sinon cela ne marchera pas..gitignore
fichier sera également sans traces par git.gitignore
fichier dans le sous-répertoire. j'ai donc à suivre.gitignore
fichier trop.Vous souhaitez utiliser
/*
au lieu de*
ou*/
dans la plupart des casÀ l'aide de
*
est valide, mais il fonctionne de manière récursive. Il ne regarde pas dans les répertoires par la suite. Les gens vous recommandons d'utiliser!*/
à la liste de diffusion des répertoires de nouveau, mais il est en fait mieux pour mettre à l'index le plus haut niveau de dossier avec/*
Le code ci-dessus serait ignorer tous les fichiers à l'exception de
.gitignore
,README.md
,folder/a/file.txt
,folder/a/b1/
etfolder/a/b2/
et tout ce qui est contenu dans ces deux derniers dossiers. (Et.DS_Store
et*.log
fichiers sera ignoré dans ces dossiers.)Évidemment, je pourrais faire par exemple
!/folder
ou!/.gitignore
trop.Plus d'infos: http://git-scm.com/docs/gitignore
.DS_Store
fichiers ne sont pas ignorés, mais via la ligne de commande, ce n'est pas un problème. Pour contourner ce problème, j'ai dû déplacer le**/.DS_Store
dessous de toutes les autres règles./*
puis!/nested/folder/*
(ou l'équivalent!/nested/folder
) sans faire!/nested/
ou!/nested
première! (et probablement/nested/*
entre les deux). Un truc à retenir est que si vous êtes à la liste blanche profondément imbriquée sous-dossier, vous devez noir les enfants dans chaque sous-dossier tout en haut, et ceux des listes noires prendra fin avec la "barre des étoiles"...Un peu plus précis:
Exemple: Ignorer tout en
webroot/cache
- mais gardezwebroot/cache/.htaccess
.Avis de la barre oblique (/) après le
cache
dossier:ÉCHOUE
ŒUVRES
À ignorer certains fichiers dans un répertoire, vous devez le faire dans le bon ordre:
Par exemple, ignorer tout dans le dossier "application" à l'exception de index.php et le dossier "config" attention à l'ordre.
Vous devez annuler ce que vous voulez faire en premier.
ÉCHOUE
application/*
!application/config/*
!application/index.php
ŒUVRES
!application/config/*
!application/index.php
application/*
git status
pour vérifier si vos modifications à.gitignore
fonctionner comme prévugit status
ne va pas vous dire ce qu'il regarde et ce qui est ignoré, alors comment pouvez-vous savoir si cela fonctionne?Vous pouvez utiliser
git config status.showUntrackedFiles no
et tous sans traces de fichiers seront cachés de vous. Voirman git-config
pour plus de détails.Pour exclure un dossier de .gitignore, le suivant peut être fait.
Cela va ignorer tous les fichiers/sous-dossiers à l'intérieur de
bower_components
sauf pour/highcharts
.Il y a un tas de questions similaires sur ce sujet, donc je vais poster ce que j'ai écrit avant:
Le seul moyen que j'ai obtenu cela fonctionne sur ma machine était de faire de cette façon:
Remarquez comment vous avez pour autoriser explicitement le contenu de chaque niveau que vous souhaitez inclure. Donc, si j'ai les sous-répertoires 5 de profondeur sous thèmes, j'ai encore besoin de le préciser.
C'est à partir de @Yarin commentaire ici: https://stackoverflow.com/a/5250314/1696153
Ces ont été rubriques utiles:
J'ai aussi essayé
et
**/wp-content/themes/**
ou
/wp-content/themes/**/*
Rien de ce qui a fonctionné pour moi non plus. Beaucoup de trail et de l'erreur!
J'ai eu un problème avec les sous-dossier.
Ne fonctionne pas:
Travaux:
C'est ce qu'ont fonctionné pour moi, j'ai voulu commettre un seul plugin Cordova au repo:
J'ai Jquery et Angulaire de la charmille. Bower installé dans
Réduit jquery est à l'intérieur de la
dist
répertoire et angulaire est à l'intérieur deangular
répertoire. J'ai seulement besoin de minimiser les fichiers à être engagée à github. Certains falsification .gitignore et c'est ce que j'ai réussi à évoquer...Espère que quelqu'un pourrait trouver cela utile.
J'ai essayé toutes les réponses que donnée ci-dessus, mais aucun n'a fonctionné pour moi. Après la lecture de la gitignore documentation (ici) j'ai découvert que si vous exclure un dossier d'abord que les noms de fichier 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 n'est pas trouvé dans l'index, et donc ne pas être inclus dans votre client de git.
Qui a été le moyen de trouver la solution. J'ai commencé avec l'ajout d'exceptions pour tous les sous-dossiers dans mon arborescence de dossiers pour obtenir ce travail, qui est un enfer d'un emploi. Par la suite, j'ai été capable de compacter la configuration détaillée de la configuration ci-dessous, qui est un peu contraire à la documentation..
De travail .gitignore:
Comme résultat que je vois dans mon client de git que seuls les deux fichiers à l'intérieur de la Pro/3rdparty/domaine/nom de module/dossier sont en cours de mise en scène pour le prochain commit, et c'est exactement ce que je cherchais.
Et si vous avez besoin de la liste blanche plusieurs sous-dossiers d'un même dossier puis le groupe le point d'exclamation lignes ci-dessous les exclure déclaration comme ceci:
D'autre il l'habitude de fonctionner comme prévu.
Je sais je suis en retard pour la fête,mais voici ma réponse.
Comme @Joakim dit, d'ignorer un fichier, vous pouvez utiliser quelque chose comme ci-dessous.
mais si le fichier est dans des répertoires imbriqués, c'est un peu dur à écrire manuellement les règles.
Par exemple, si nous voulons ignorer tous les fichiers dans un
git
projet, mais pasa.txt
qui est situé dansaDir/anotherDir/someOtherDir/aDir/bDir/cDir
.Ensuite, notre
.gitignore
sera quelque chose comme ceciLes données ci-dessus
.gitignore
fichier sauter tous les répertoires et fichiers à l'exception!aDir/anotherDir/someOtherDir/aDir/bDir/cDir/a.txt
Comme vous avez pu le remarquer, il est difficile de définir ces règles.
Pour résoudre ce problème, j'ai créé une simple application de console appelée git-ne pas ignorer qui va générer les règles pour vous. J'ai hébergé le projet dans github avec des instructions détaillées.
Exemple D'Utilisation
De sortie
Il y a aussi une simple version web disponible ici
Merci.
C'est la façon dont je l'ai fait:
Utilisation
gig status -u
pour afficher les fichiers sans traces répertoires de manière récursive - avecgit status
vous ne voyez dossiers, ce qui pourrait vous tromper en pensant que tout à l'intérieur d'eux a été suiviLa solution la plus Simple si vous avez besoin de l'ignorer tout à l'exception de quelques fichiers et quelques racine dossiers:
La magie est en
/*
(comme décrit ci-dessus), il ignore tout de l' (racine), MAIS PAS de manière récursive.Rien n'a fonctionné pour moi jusqu'à présent parce que j'ai essayé d'ajouter un pot de lib.
Cela n'a pas fonctionné:
Cela a fonctionné:
J'ai aussi eu quelques problèmes avec la négation de fichiers uniques. J'ai été en mesure de s'engager, mais mon IDE (Ide) se plaignait toujours sur les fichiers ignorés, qui sont suivis.
Affiche les deux fichiers que j'ai exclu de cette façon:
En fin de compte, cela a fonctionné pour moi:
La clé a été la de la négation du dossier
typo3conf/
premier.Aussi, il semble que l'ordre des états n'a pas d'importance. Au lieu de cela, vous devez explicitement à néant tous les sous-dossiers, avant de vous peut aller à l'encontre simples fichiers qu'il contient.
Le dossier
!public/typo3conf/
et le contenu du dossierpublic/typo3conf/*
sont deux choses différentes pour .gitignore.Grand fil! Cette question m'a dérangé pendant un certain temps 😉
J'ai eu ce travail
Me semble que j'ai trouvé quelque chose qui a fonctionné pour moi que personne d'autre n'mentionné.
Fondamentalement, il semble nier un sous-répertoire de non-respect, vous devez avoir deux entrées, l'une pour le sous-répertoire lui-même
!subdir/
et puis un autre qui s'étend à tous les fichiers et dossiers sous il!subdir/**/*