2010-09-08 15 views
8

WinXP + mysisGit1.7git ignorować wyjątek nie działa jako pożądanego

W moim pliku .gitignore, ale nadal nie widać Demos/path/to/file/file.cpp śledzone przez git.

mam poniżej wpisów:

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

Bezwzględna ścieżka to: c:\Project\Demos\path\to\file\file.cpp

Co może być nie tak? Proszę, dziękuję.


EDIT:

znalazłem sposób jak mysisGit praca .gitignore na WindowsXP może ignorować tylko pewien typ pliku, a następnie wykluczyć niektóre pliki z tego samego typu. Na przykład:

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

To nie działa, ignoruj ​​folder i wyklucz niektóre pliki w tym folderze. Poniżej nie będzie działać:

/folderUnderRepoRoot/ 
!/folderUnderRepoRoot/tracking.cpp 

Nor

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

Ja jednak nie zauważyć, że istnieje wyjątek. Istnieje sposób obejścia problemu, aby wykluczyć pliki tuż pod ignorowanym folderem (a nie pod jego podfolderem). To działa.

/folderUnderRepoRoot/* 
/folderUnderRepoRoot/tracking.cpp 

Ale ten sposób jest tylko ograniczona, gdy plik nie jest w każdym podkatalogu, więc to nie jest tak użyteczne.

Więc w końcu nadal zatwierdzam większość plików źródłowych, nawet byłem zainteresowany tylko kilkoma plikami podczas śledzenia innych dużych projektów. Co oznacza, że ​​jest kilka plików, których nie dotknę, ale nadal muszę je zatwierdzić.

Oto another thread, który miał podobny problem.

+0

Did You 'git dodać Dema/path/to/file/file.cpp', aby rozpocząć śledzenie? – ewall

+0

Próbowałem, ale bez powodzenia. – Stan

+0

@Stan: znalazłeś rozwiązanie? Znalazłem ten sam problem na git i ubuntu, więc nie jest to związane z platformą –

Odpowiedz

0

Czy możesz spróbować zastąpić go numerem !/Demos/path/to/file/file.cpp (zwróć uwagę na wiodący ukośnik za wykrzyknikiem) i spróbuj ponownie?

+0

to nie działa. W każdym razie dzięki. – Stan

1

należy dodawać do .gitignore następująco:

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

Ale upewnij się, że co najmniej jeden plik dodany do indeksu git z folderu folderUnderRepoRoot.

7

Twój wyjątek .gitignore nie działa, ponieważ "Nie można ponownie dołączyć pliku, jeśli katalog nadrzędny tego pliku jest wykluczony" [source].

Jako brzydkie, ale pracujący obejście, to zrobić na każdym poziomie katalogów w ścieżce do pliku:

  1. wykluczyć wszystkie treści katalogu
  2. re obejmują podkatalogu prowadzącą do Twój plik (lub w końcu twój plik).

Twoje wpisy będą wyglądać tak, z każdej sekcji dwuliniowy wykonującego czynności na jednym poziomie hierarchii katalogu:

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 

Więc nie zaczynaj wyłączając Demos/ jak pytanie autor tak zrobił. Jest to katalog nadrzędny naszego pliku, więc musisz go ponownie uwzględnić zaraz potem. Zamiast tego zacznij od wykluczenia jego zawartości: : Demos/**.

0

Jeśli to tylko jeden plik, nie będę normalnie modyfikować .gitignore

Poniżej należy ignorować .gitignore i pozwala dodać plik

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