2017-05-15 1 views
1

J'ai un dossier contenant deux types de fichiers qui sont requis pour compiler un programme logiciel. Lorsque le logiciel est compilé, il fichiers autogénère Je ne veux pas suivre, mais un de ces fichiers est de la même extension des fichiers nécessaires pour compiler le programme que j'ai:git ignorer tous les fichiers sauf extension mais ignorer le modèle d'extension

# ignore everything (to ignore all auto-generated files without listing their extensions) 
* 

# but do not ignore (required to compile) 
!*.abc 
!*.xyz 

# but ignore if file name matches pattern (auto-generated file after compilation) 
*generic.abc 

Y at-il un façon d'ignorer tout, sauf deux extensions de fichier spécifiées, mais ignorer l'extension de fichier spécifiée si elle est précédée d'une certaine convention de nommage? Note: il y a du texte unique avant le fichier "generic.abc", c'est pourquoi je veux ignorer cette convention "generic.abc". Merci d'avance!

+0

Si possible, je vous recommande de rendre vos règles d'exclusion plus explicites. Mais si vous voulez vraiment cette approche d'ignorer tout sauf ce que vous liste, alors les règles que vous avez spécifiées semblent fonctionner (au moins dans les tests rapides, j'ai jeté ensemble). Je suppose que vous avez trouvé un problème lorsque vous essayez d'utiliser ces règles; quel comportement inattendu avez-vous observé? –

+0

@MarkAdelsberger Il semble suivre le fichier generic.abc ... il a d'abord été suivi avant d'ajouter le code ci-dessus au fichier .gitignore mais je l'ai supprimé avec 'git rm --cached generic.abc' mais il apparaît toujours quand je tape 'git status' – Prevost

+0

Après avoir' git rm --cached generic.abc', est-il affiché comme 'deleted' (indiquant seulement qu'il était dans la validation précédente) ou comme un fichier non suivi? –

Répondre

0

Oui, cela fonctionne exactement comme vous l'avez posté.

1

J'avais oublié un symbole * après le nom de fichier et l'extension. J'ai trouvé ce lien utile here.

Ceci est le fichier .gitignore révisé et cela semble fonctionner.

# ignore everything (to ignore all auto-generated files without listing their extensions) 
* 

# but do not ignore (required to compile) 
!*.abc 
!*.xyz 

# but ignore if file name matches pattern (auto-generated file after compilation) -> HERE IS THE ADDITIONAL * after .abc! 
*generic.abc*