111 votes

Est-il possible d'ignorer les règles .gitignore dans un sous-répertoire ?

Je veux ignorer toutes les règles .gitignore dans les sous-répertoires à l'exception des règles .gitignore dans Root.

par exemple : J'ai déjà .gitignore dans une structure de répertoire /a .

Et aussi avoir .gitignore dans le fichier /a/b . Supposons que /a a a.txt y b.txt des dossiers.

/a/b a .config fichier. .gitignore définit .config en /a/b .

.config sera ignoré par .gitignore en /a/b .

Mais je veux vraiment suivre .config en ignorant les règles de .gitignore dans le sous-répertoire.

Est-ce possible ?

167voto

signine Points 1108

Votre question n'est pas très claire, mais s'il y a des sous-répertoires où vous voulez des règles de gitignore différentes, vous pouvez simplement créer un nouveau .gitignore dans ce répertoire.

Disons que vous avez :

project/.gitignore
project/stuff/.gitignore

Le .gitignore dans stuff/ remplacera le .gitignore dans le répertoire Root.

git help gitignore ou man gitignore contient beaucoup plus d'informations sur ce qui est possible.

55voto

Nick Zalutskiy Points 4579

Supposons que vous souhaitiez inclure node_modules dans votre référentiel, mais qu'un module plus loin dans la ligne a .gitignore de sa propre initiative. Vous pouvez annuler les règles en ajoutant ce qui suit à votre racine .gitignore fichier :

# Make sure to include everything in node_modules.
!node_modules/**

14voto

Ross Patterson Points 4331

La clé du problème réside dans le fait qu'un répertoire parent est exclu. A partir de $ man gitignore :

Il n'est pas possible de réinclure un fichier si un répertoire parent de ce fichier est exclu. Git ne liste pas les répertoires exclus pour des raisons de performance, donc les motifs sur les fichiers contenus n'ont aucun effet, quel que soit l'endroit où ils sont définis.

Voici comment j'ai réussi à le faire fonctionner. Étant donné.. :

/a/...
/b/foo
/c/...

/.gitignore :

/*
!/b

Dans ce cas /b/foo apparaîtront comme des fichiers inclus, tandis que tout ce qui se trouve dans /a y /c sera exclue. La contrepartie est que vous devez ajouter une négation pour tous les parents d'un répertoire dans lequel vous voulez inclure des fichiers.

9voto

helloiloveit Points 21

Pour autant que je sache, il n'y a pas de moyen de le faire. Car le .gitignore local écrasera le ginignore racine. Ma solution est d'ajouter manuellement.

git add --force [ your file and folder]

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