2010-09-08 21 views
8

+ Windows XP mysisGit1.7git ignorer exception ne fonctionne pas comme on le souhaite

Dans mon fichier .gitignore, mais ne peut toujours pas voir Demos/path/to/file/file.cpp être suivis par git.

J'ai ci-dessous les entrées:

Demos/ 
!Demos/path/to/file/file.cpp 

Le chemin absolu est: c:\Project\Demos\path\to\file\file.cpp

Quoi de mal? S'il vous plaît, aidez, merci.


EDIT:

J'ai trouvé la manière dont le travail mysisGit .gitignore sur WindowsXP ne peut ignorer certain type de fichier, puis exclure certains fichiers avec le même type. Par exemple:

Il ne fonctionne pas ignorer le dossier et exclure certains fichiers sous ce dossier. Ci-dessous ne fonctionnera pas:

/folderUnderRepoRoot/ 
!/folderUnderRepoRoot/tracking.cpp 

ne

anyFolderNamedLikeThis/ 
!anyFolderNamedLikeThis/tracking.cpp 
!/anyFolderNamedLikeThis/tracking.cpp 

Cependant, je ne trouve qu'il ya une exception. Il existe un moyen de contourner les fichiers juste sous le dossier ignoré (pas dans son sous-dossier). Cela fonctionne.

/folderUnderRepoRoot/* 
/folderUnderRepoRoot/tracking.cpp 

Mais cette façon est limitée que lorsque le fichier est pas dans un sous-dossier, il est donc pas utile.

Je finis donc par commettre la plupart des fichiers source, même si je ne m'intéressais qu'à quelques fichiers tout en suivant d'autres gros projets. Ce qui signifie qu'il y a un tas de fichiers que je ne toucherai pas mais que je dois encore les valider.

Voici another thread qui avait un problème similaire.

+0

Avez-vous 'ajouter git Demos/path/to/file/file.cpp' pour commencer à le suivre? – ewall

+0

Essayé, mais pas de chance. – Stan

+0

@Stan: avez-vous trouvé une solution? J'ai trouvé le même problème sur git et ubuntu donc ce n'est pas lié à la plate-forme –

Répondre

0

Pouvez-vous essayer de le remplacer par !/Demos/path/to/file/file.cpp (notez la barre oblique après le point d'exclamation) et essayez à nouveau?

+0

cela ne fonctionne pas. Merci quand même. – Stan

1

ajoutons à .gitignore comme suit:

folderUnderRepoRoot/**/* 
!folderUnderRepoRoot/tracking.cpp 

Mais assurez-vous que au moins un fichier a été ajoutée à l'index git à partir du dossier folderUnderRepoRoot.

7

Votre exception .gitignore ne fonctionne pas car "Il est impossible d'inclure à nouveau un fichier si un répertoire parent de ce fichier est exclu" [source].

En tant que laid, mais travaillant solution de contournement, faire à tous les niveaux de répertoire sur le chemin de votre fichier:

  1. exclura tout le contenu du répertoire
  2. re comprennent le sous-répertoire conduisant à votre fichier (ou enfin, votre fichier).

Vos entrées ressembleraient cela, chaque section deux lignes d'exécuter ces étapes pour un niveau de la hiérarchie des répertoires:

Demos/** 
!Demos/path/ 

Demos/path/** 
!Demos/path/to/ 

Demos/path/to/** 
!Demos/path/to/file/ 

Demos/path/to/file/** 
!Demos/path/to/file/file.cpp 

Donc, vous ne commencez pas par l'exclusion de Demos/ comme la question auteur a fait. C'est un répertoire parent de notre fichier, donc vous devrez le ré-inclure juste après. Au lieu de cela, commencez par exclure son contenu: Demos/**.

0

Si c'est juste un fichier, je ne modifierait pas normalement .gitignore

Les éléments suivants doivent ignorer .gitignore et vous permettre d'ajouter le fichier

git add -f Demos/path/to/file/file.cpp