471 votes

Veuillez ignorer l'exception git

J'ai un fichier gitignore qui fait en sorte que git ignore les fichiers *.dll, et c'est en fait le comportement que je veux. Cependant, si je veux une exception (c'est-à-dire pouvoir commettre foo.dll), comment puis-je y parvenir?

8 votes

Possible duplicate de Exceptions in .gitignore

0 votes

Fwiw, le grand-père des réponses en double sur ce sujet que vous devriez examiner serait probablement Make .gitignore ignore everything except a few files - une activité très régulière et plusieurs bonnes réponses. Je suis particulièrement fan de cette réponse, qui semble claire et approfondie.

0 votes

645voto

Skilldrick Points 33002

Utilisation :

*.dll    #Exclure tous les dlls
!foo.dll #Sauf pour foo.dll

De gitignore:

Un préfixe facultatif ! qui négative le motif ; tout fichier correspondant exclu par un motif précédent sera à nouveau inclus. Si un motif négatif correspond, cela remplacera les sources de motifs de moindre précédence.

41 votes

Voir également le formulaire de réponse @Matiss Jurgelis - c'est une addition importante

7 votes

Puis-je ajouter l'exception à mon gitignore de projet et non à mon gitignore global ? Par exemple, si je voulais inclure tous les fichiers DLL d'un répertoire ? Mon gitignore_global contient *.dll, et mon gitignore de projet contient !Libs/*.dll, mais cela ne semble pas fonctionner.

3 votes

@jkinz, vous devriez essayer !Libs/**/*.dll.

397voto

Matiss Jurgelis Points 542

Git ignore les dossiers si vous écrivez :

/js

mais il ne peut pas ajouter d'exceptions si vous faites : !/js/jquery ou !/js/jquery/ ou !/js/jquery/*

Vous devez écrire :

/js/* 

et seulement alors vous pouvez exclure les sous-dossiers de cette façon

!/js/jquery

56 votes

C'est très important. Merci!

8 votes

Cependant, il semble que vous ne pouvez pas ajouter de dossiers imbriqués, par exemple !/js/jquery/xyzlib ne sera pas ignoré...

2 votes

Comme le dit @Ignorant, le dossier que vous "exceptez" de la règle d'ignorance doit être situé au même endroit que le "*"

68voto

noxoc Points 2309

Vous pouvez simplement git add -f chemin/vers/foo.dll.

.gitignore ignore seulement les fichiers pour le suivi habituel et des choses comme git add .

6 votes

Juste pour plus de détails, le -f indique à git de forcer l'ajout de ce fichier dans le référentiel car il pourrait l'ignorer d'abord en raison de votre .gitignore

1 votes

Ce qui est génial si vous n'avez qu'un seul fichier, moins utile si vous avez besoin d'un motif

0 votes

Bonne à savoir. Mais il vaut mieux gérer toutes les règles dans le .gitignore que de ne pas savoir que certaines règles sont définies ailleurs, particulièrement dans un contexte d'équipe.

26voto

Simon Points 84

Pour exclure tout dans un répertoire, sauf certains sous-répertoires, faites ce qui suit :

wp-content/*
!wp-content/plugins/
!wp-content/themes/

Source : https://gist.github.com/444295

0 votes

Mais qu'en est-il d'un fichier dans un sous-répertoire? (dir1/, !dir1/dir2/some_file)

15voto

Robert Munteanu Points 31558

Ajoutez simplement ! avant une règle d'exclusion.

Conformément à la page de manuel de gitignore:

Les modèles ont le format suivant :

...

  • Un préfixe facultatif ! qui nie le motif ; tout fichier correspondant exclu par un modèle précédent sera de nouveau inclus. Si un motif négatif correspond, cela remplacera les sources de motifs de priorité inférieure

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X