2012-11-15 17 views
12

Utworzyłem repozytorium dla mojego folderu domowego. To jest mój .gitignore file:Git: Ignorowanie odwrotne (.gitignore)

!.vim/plugin/* 
!.vim/doc/* 
.* 
* 
.viminfo 
.vim/.netrwhist 
.vim-fuf-data/file/stats 
bin/dwm/dwm 

Więc gdy tworzę nowy plik wewnątrz .vim/plugin Spodziewałem się, że po git status plik ten został pokazany, ale no..why?

EDIT: po parę odpowiedzi Zmieniłem pozycję odwrotną ignorując linie w ten sposób poniżej, ale problemów jest taka sama: nowe pliki tworzę wewnątrz folderu .vim/plugin nie są pokazane po git status ..

.* 
* 
.viminfo 
.vim/.netrwhist 
.vim-fuf-data/file/stats 
bin/dwm/dwm 
!.vim/plugin/* 
!.vim/doc/* 
+1

Czy 'git st' jest aliasem dla' git status'? –

+0

Tak, po ustawieniu w pliku .gitconfig – garyh

+0

próbowałem tych skróconych poleceń, złego nawyku od svn ... – Daniel

Odpowiedz

17

W wierszu 4 jesteś ignorując wszystko z *. To przesłoni poprzedni wzór negujący. Od man page:

w jednym poziomie pierwszeństwa, ostatni wzorzec dopasowania decyduje o wyniku

Gdzie „poziom pierwszeństwa” oznacza różne źródła dla ignorować wzory jak .gitignore i $GIT_DIR/info/exclude .

Jeśli chcesz ignorować wszystko oprócz wzorów zaczynających się ! należy przesunąć * do początku .gitignore


Edycja

znalazłem rozwiązanie z pomocą another question on SO:

* 
!*/ 
!.vim/plugin/* 
+0

Edytowałem moje pytanie – ziiweb

+0

@tirengarfio Dito, zredagowałem moją odpowiedź. – Deve

+0

tak, to działało dzięki! – ziiweb

0

Kolejny sposobem byłoby ignorować tylko top poziomie plików i katalogów, a na białej liście katalogów zrobić to samo, jeśli to konieczne, ponieważ w this answer to a related question

Na przykład mój .gitignore teraz wygląda to

/* 
!.gitignore 
!.vimrc 
!.bashrc 
!.vim/ 
.vim/.netrwhist 
!.gconf/ 
.gconf/apps/* 
!.gconf/apps/gnome-terminal 
!bin/ 

Odpowiedź DEVE sprawia, że ​​git jest bardzo wolny, ponieważ przeszukuje wszystkie katalogi pod twoim homedirem. (W konkretnym przypadku użycia git dla ustawień w twoim homedirze)

Powiązane problemy