J'essaie d'utiliser un fichier .gitignore avec des motifs inversés (lignes commençant par!), Mais cela ne fonctionne pas comme je m'y attendais.
À titre d'exemple minimal, j'ai la structure de répertoires suivante:
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 cette page de documentation ) est que le fichier aaa / ccc / otherfile.txt ne doit pas être ignoré, mais en fait git ignore tout sous aaa.
Ai-je mal compris cette phrase: "Un préfixe facultatif! Qui annule le modèle; tout fichier correspondant exclu par un modèle précédent sera de nouveau inclus."?
BTW, c'est sur Windows avec msysgit 1.7.0.2.
Si vous souhaitez tout exclure
aaa
, mais inclureaaa/ccc
et tout ce qui se trouve en dessous, vous devez utiliser:La première ligne dit à git d'ignorer tout ce qui se trouve en dessous
aaa
, la seconde lui dit de ne pas ignorer le dossieraaa/ccc
qui "active" la troisième ligne qui lui dit alors de ne pas tout ignorer en dessousaaa/ccc
.la source
aaa/ccc
à n'importe quel niveau, ce qui a fonctionné pour moi était!aaa/ccc/**
au lieu de!aaa/ccc/*
Si quelqu'un ne voit toujours pas les éléments nouvellement non ignorés dans une main en
git status
cours d'exécution, ungit update-index
avant peut aider git à voir les changements (au moins dans la version 1.9.x de gitbash).la source