/ / .gitignore wyklucza pliki w katalogu, ale nie określone katalogi - git, gitignore

.gitignore wyklucza pliki w katalogu, ale nie określone katalogi - git, gitignore

application/cache/*
application/cache/folder/*
application/cache/folder/onemorefolder/*

To nie działa, kiedy sklonuję projekt, nie ma "application/cache" folder lub "application/cache/folder" folder itp. ...

Chciałbym, jeśli pliki w folderach pamięci podręcznej nie byłyby buforowane, ale foldery były, tak aby uprawnienia folderów transferu i istnieje.

Odpowiedzi:

200 za odpowiedź № 1

Git nie śledzi folderów, tylko pliki, więc jeśli zignorujesz wszystko w folderze, Git nie będzie miał nic do śledzenia. Możesz dodać .gitignore plik do każdego katalogu (application/cache, application/cache/folder, application/cache/folder/onemorefolder/) o następującej zawartości:

*
!.gitignore

Następnie możesz dodać te katalogi i tylko .gitignore plik w każdym katalogu zostanie dodany - ale oznacza to, że katalogi będą teraz śledzone (tj. tworzone podczas klonowania).


21 dla odpowiedzi nr 2

Git nie śledzi pustych katalogów. Po prostu dodaj puste pliki zastępcze do folderów, które chcesz zatwierdzić.

touch application/cache/.keep
git add -f application/cache/.keep

Zrób to również z każdym "pustym" folderem. Później możesz zignorować te pliki, tak naprawdę istnieją tylko po to, aby git tworzył te katalogi na klonie. Wpisy w .gitignore uniemożliwia śledzenie innych plików znajdujących się w folderach (chyba że wymuszasz je git add -f ;)).


11 dla odpowiedzi nr 3

Jest jeszcze inny, być może, lepszy sposób na zrobienie tego. Zamiast posiadania plików sub .gitignore w folderach, które chcesz zachować. Możesz umieścić to w katalogu głównym .gitignore w następujący sposób:

application/cache/*
application/cache/folder/*
application/cache/folder/onemorefolder/*
!*.gitkeep

Teraz po prostu twórz i zatwierdzaj puste pliki .gitkeep w katalogach wymienionych powyżej. Folder zostanie następnie śledzony tymi plikami .gitkeep, ale żadna z nich nie będzie śledzona.


3 dla odpowiedzi № 4

możesz umieścić plik .gitignore w każdym z nich (jak powiedział mipadi) lub zrobić coś takiego w głównym pliku .gitingnore

/assets/*/
/assets/*.*

to działa dobrze dla mnie


1 dla odpowiedzi nr 5

Visual Studio nie podobało się zaakceptowanej odpowiedzi. Musiałem dodać nową linię przed *, aby to działało.

# Ignore all files in this folder.
*
!.gitignore