.gitignore wyklucza pliki w katalogu, ale nie w niektórych katalogach


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

To nie wydaje się działać. Kiedy klonuję projekt, nie ma "application/cache"folderu ani "application/cache/folder"folderu itp.

Chciałbym, aby pliki w folderach pamięci podręcznej nie były buforowane, ale foldery były, aby uprawnienia do folderów zostały przeniesione i istniały.

Odpowiedzi:


220

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

*
!.gitignore

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


7
Pliki .gitignore używane do tego celu mogą być puste.
kevpie,

2
Mogą być puste, jeśli foldery są ignorowane przez górny .gitignoreplik. W tym przypadku jest to dokładna moja odpowiedź.
KingCrunch

4
bardziej sensowne i prostsze jest użycie pliku o nazwie .gitkeep, wtedy nie musisz niczego umieszczać w pliku .gitignore.
Jeż

3
@kevpie W folderze są inne pliki i nie chce, aby były śledzone. Jeśli plik .gitignore jest pusty, te pliki będą najwyraźniej śledzone.
maliayas

w tym samym celu używam .gitkeepzamiast .gitignore. to ma dla mnie więcej sensu
Éderson T. Szlachta 13.07.16

22

Git nie śledzi pustych katalogów. Po prostu dodaj kilka pustych plików zastępczych w folderach, które chcesz zatwierdzić.

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

Zrób to również dla każdego „pustego” folderu. Później możesz zignorować te pliki, tak naprawdę istnieją tylko po to, aby upewnić się, że git utworzy te katalogi na klonie. Wpisy w zabezpieczają .gitignoreinne pliki w folderach przed śledzeniem (chyba że wymusisz to git add -f;)).


16

Jest na to inny, być może czystszy sposób. Zamiast mieć pliki 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 utwórz i zatwierdź puste pliki .gitkeep do katalogów wymienionych powyżej. Folder będzie następnie śledzony za pomocą tych plików .gitkeep, ale żadna zawartość nie będzie śledzona.


2
lub po prostu !*.gitkeep:)
Éderson T. Szlachta 13.07.16

Pytanie brzmiało, jak zignorować zawartość folderów, ale zachować same foldery. Więc uważam, że moja odpowiedź jest aktualna i samo posiadanie! *. Gitkeep nie zignoruje zawartości folderów.
Joel Duckworth

3

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

/assets/*/
/assets/*.*

to działa dobrze dla mnie


Działa to, ale tylko wtedy, gdy repozytorium używa rozszerzeń plików. Coś takiego root/LICENSE-FILEnie zostanie wykluczone.
Brett Zamir

2

Visual Studio nie spodobała się zaakceptowana odpowiedź. Musiałem dodać nową linię przed *, aby to działało.

# Ignore all files in this folder.
*
!.gitignore
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.