2013-09-21 27 views
24

To moja struktura folderów:Git Ignoruj ​​wszystko w katalogu oprócz podfolderów

data/ 
    .gitignore 
    uploads/ 
     .gitignore 

chciałbym popełnić foldery, ale nie plików wewnątrz nich.

Więc mogę dodać pliki .gitignore w każdym folderze o następującej treści:

# Ignore everything in this directory 
* 
# Except this file 
!.gitignore 

Problemem jest to, że * także odpowiedzią na katalogach więc git utworów tylko data/.gitignore

Odpowiedz

29

Rozwiązanie jest dość proste, dodać !*/ do plików .gitignore i tylko pliki w bieżącym folderze będą ignorowane

# Ignore everything in this directory 
* 
# Except this file 
!.gitignore 
# Except folders 
!*/ 
40

Proszę nie używać niewłaściwego użycia plików.gitignore. Lepiej trzymać się domyślnych sposobów na kontynuowanie tego, aby późniejsi programiści mogli szybko dostać się do projektu.

  1. Dodaj pusty .gitkeep plików w folderach, które chcesz popełnić bez plików
  2. wykluczyć foldery, ale nie .gitkeep z głównej.gitignore pliku.

    folder/* 
    !folder/.gitkeep 
    

ta ignoruje wszystkie pliki w folderze, ale nie plików .gitkeep. Teraz folder będzie zawierał tylko plik .gitkeep jako treść.

+0

Co niewłaściwego jest? Ma całkowicie uzasadnioną potrzebę, a @ nickel715 ładnie to rozwiązuje, z hackem o podobnej złożoności niż ta, którą proponujesz ... – dangonfast

+2

Ponieważ '.gitignore' mówi co jakiś czas późniejszy programista, który musi spojrzeć na ten plik_ tylko po to, aby zobaczyć nic, co zostanie zignorowane. Pliki '.gitignore' również nie mają być ustawione na żaden katalog niż główny katalog. Gdybyś to zrobił, wszyscy musieliby przejrzeć wszystkie podfoldery, aby zobaczyć, czy coś jest zignorowane (i dowiedzieć się, że nie ma nic ignorowanego), aby zobaczyć, co faktycznie kończy się w repozytorium lub w potoku wdrażania. Nie dodawaj niepotrzebnych komplikacji dla późniejszych programistów, ponieważ jesteś leniwym i nie przestrzegasz konwencji. – kaiser

+1

Nadal ignoruje podkatalogi. -1 – CommaToast

-4

Spróbuj tego:

*.* 
!.gitignore 
!*/* 
+0

To nie działa dla plików bez kropki w nazwach plików http://pastie.org/10807907 – nickel715

Powiązane problemy