web-dev-qa-db-fra.com

Y a-t-il un moyen de dire à git d'inclure uniquement certains fichiers au lieu d'ignorer certains fichiers?

Mes programmes génèrent généralement d’énormes fichiers de sortie (~ 1 Go) que je ne souhaite pas sauvegarder sur le référentiel git. Donc, au lieu de pouvoir faire

git add .

Je dois faire quelque chose comme

git add *.c *.cc *.f *.F *.C *.h *.cu

ce qui est un peu lourd ...

Je suis assez confiant que je pourrais écrire un script Perl rapide dans le contenu du répertoire dans .gitignore, puis supprimer des fichiers basés sur un fichier .gitinclude (ou un nom similaire), mais cela me semble un peu trop dur. Y a-t-il un meilleur moyen?

145
David Hollman

Je n'ai pas eu besoin de l'essayer moi-même, mais d'après ma lecture de TFM , il semble qu'un motif négatif ferait ce que vous voulez. Vous pouvez remplacer les entrées dans .gitignore par des entrées annulées ultérieurement. Ainsi, vous pourriez faire quelque chose comme:

*.c
!frob_*.c
!custom.c

Pour qu'il ignore tous les fichiers .c sauf custom.c et tout ce qui commence par "frob_"

203
T.E.D.

créez un fichier .gitignore dans votre référentiel et vous souhaitez suivre uniquement les fichiers c et ignorer tous les autres fichiers, puis y ajouter les lignes suivantes ....

*
!*.c

'*' ignorera tous les fichiers

et ! les fichiers seront ignorés .... alors nous demandons à git de ne pas ignorer les fichiers c ...

68

La meilleure solution pour y parvenir

créer .gitignore fichier dans le référentiel root, et si vous voulez inclure uniquement .c fichier, vous devez ajouter les lignes ci-dessous à .gitignore fichier

*.*
!*.c

cela inclura tous .c fichier du répertoire et du sous-répertoire de manière récursive.

en utilisant

*
!*.c

ne fonctionnera pas sur toutes les versions de git.

Testé sur

git version 2.12.2.windows.2

9
Smaranjit

Utilisez ceci dans gitignore

*.*
!*.c

testé avec la version 2.7.4 de git

0
alpha_989