138 votes

Comment faire niée habitudes de travail .gitignore?

Je suis d'essayer d'utiliser une .gitignore fichier avec niée motifs (lignes commençant avec !), mais cela ne fonctionne pas de la manière que j'attends.

Comme un exemple minimal, j'ai le lien suivant sur la structure de répertoires:

C:/gittest
 -- .gitignore
 -- aaa/
   -- bbb/
     -- file.txt
   -- ccc/
     -- otherfile.txt

et dans mon fichier gitignore, j'ai ceci:

aaa/
!aaa/ccc/

Ma compréhension (basée sur ceci: http://ftp.sunet.se/pub//Linux/kernel.org/software/scm/git/docs/gitignore.html), c'est que le fichier aaa/ccc/otherfile.txt ne doit pas être ignoré, mais en fait, git est ignorant de tout, en vertu de l'aaa.

Suis-je malentendu cette phrase: "Un préfixe facultatif ! ce qui annule le motif; tout fichier de correspondance des exclus par un modèle précédent deviendra inclus de nouveau."?

BTW, c'est sur Windows avec msysgit 1.7.0.2.

232voto

Jefromi Points 127932

Je pense que ce que vous voulez faire est de:

aaa/*
!aaa/ccc

Vous dites qu'il "ne regarde pas en aaa" alors qu'il n'a jamais examine le chemin de aaa/ccc. Si vous utilisez le caractère générique, il lit encore le contenu de aaa, puis chaque entrée correspond à la générique et est ignoré, sauf aaa/ccc qui sera replacé dans.

29voto

xmak Points 81

Si vous souhaitez exclure de tout, en aaa, mais comprennent aaa/ccc et tout en dessous, vous devez utiliser:

aaa/*
!aaa/ccc
!aaa/ccc/*

La première ligne indique à git d'ignorer tout sous aaa, la deuxième permet de ne pas ignorer le dossier aaa/ccc qui, de fait, "permet" de la troisième ligne qui ensuite permet de ne pas ignorer tout sous aaa/ccc.

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