2010-09-08 7 views
8

WinXP Arbeits + mysisGit1.7git ignorieren Ausnahme nicht wie gewünscht

In meiner .gitignore Datei, kann aber immer noch nicht sehen Demos/path/to/file/file.cpp von git verfolgt.

Ich habe unter Einträge:

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

Der absolute Pfad ist: c:\Project\Demos\path\to\file\file.cpp

Was könnte falsch sein? Bitte helfen Sie, danke.


EDIT:

ich den Weg gefunden, wie mysisGit .gitignore Arbeit auf WindowsXP nur bestimmte Dateitypen ignorieren kann, dann einige Dateien mit gleicher Art auszuschließen. Zum Beispiel:

*.bak 
!tracking.bak 
!/path/to/file/tracking2.bak 

Es funktioniert nicht, Ordner zu ignorieren und einige Dateien in diesem Ordner auszuschließen. Im Folgenden wird nicht funktionieren:

/folderUnderRepoRoot/ 
!/folderUnderRepoRoot/tracking.cpp 

Nor

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

Aber ich finde, dass eine Ausnahme gibt. Es gibt eine Möglichkeit, Dateien direkt unter dem ignorierten Ordner (nicht in seinem Unterordner) auszuschließen. Das funktioniert.

/folderUnderRepoRoot/* 
/folderUnderRepoRoot/tracking.cpp 

Aber auf diese Weise ist nur begrenzt, wenn die Datei nicht in jedem Unterordner ist, so ist es nicht so nützlich.

Also ich am Ende immer noch commit die meisten Quelldateien, auch ich war nur an ein paar Dateien interessiert, während einige andere große Projekt verfolgen. Was bedeutet, dass es eine Reihe von Dateien gibt, die ich nicht berühre, die ich aber trotzdem binden muss.

Hier ist another thread, die ähnliches Problem hatte.

+0

Sie Did 'git add Demos/path/to/file/file.cpp' um mit der Verfolgung zu beginnen? – ewall

+0

Versucht, aber kein Glück. – Stan

+0

@Stan: Haben Sie eine Lösung gefunden? Ich habe das gleiche Problem auf Git und Ubuntu, so ist es nicht Plattform bezogenen –

Antwort

0

Können Sie es stattdessen mit !/Demos/path/to/file/file.cpp ersetzen (beachten Sie den führenden Schrägstrich nach dem Ausrufezeichen) und versuchen Sie es erneut?

+0

das funktioniert nicht. Trotzdem danke. – Stan

1

Sie zu .gitignore hinzufügen wie folgt:

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

Aber stellen Sie sicher, dass zumindest eine eine Datei aus dem Ordner folderUnderRepoRoot git Index hinzugefügt.

7

Ihre Ausnahme .gitignore funktioniert nicht, weil "es nicht möglich ist, eine Datei wieder aufzunehmen, wenn ein übergeordnetes Verzeichnis dieser Datei ausgeschlossen ist" [source].

als hässliches, aber arbeit Problem zu umgehen, tun dies auf jeder Verzeichnisebene auf dem Pfad zur Datei:

  1. Ausschließen aller Inhalt des Verzeichnisses
  2. Wieder gehören das Unterverzeichnis führt zu Ihre Datei (oder schließlich Ihre Datei).

Ihre Eingaben würde wie folgt aussehen, wobei jeder zwei Linienabschnitt diese Schritte für eine Ebene der Verzeichnishierarchie ausführen:

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 

Also, Sie starten nicht durch Demos/ wie die Frage ohne Autor hat es getan. Es ist ein übergeordnetes Verzeichnis unserer Datei, Sie müssten es also gleich wieder einfügen. Beginnen Sie stattdessen mit dem Ausschluss des Inhalts: Demos/**.

0

Wenn es nur eine Datei ist, würde ich normalerweise nicht ändern .gitignore

Die folgende Beschreibung ist .gitignore ignorieren und lassen Sie die Datei hinzufügen

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