.gitignore dizindeki dosyaları hariç tutar, ancak belirli dizinleri hariç tutar


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

Bu işe yaramıyor gibi görünüyor. Projeyi klonladığımda "application/cache"klasör veya "application/cache/folder"klasör yok vs ...

Önbellek klasörlerindeki dosyaların önbelleğe alınmamasını, ancak klasörlerin önbelleğe alınmasını isterdim, böylece klasör izinleri aktarılır ve var olur.

Yanıtlar:


220

Git klasörleri değil, yalnızca dosyaları izliyor, bu nedenle bir klasördeki her şeyi göz ardı ederseniz, Git'in izleyeceği hiçbir şey olmayacak. Bir ekleyebilir .gitignore(her dizine application/cache, application/cache/folder, application/cache/folder/onemorefolder/aşağıdaki içerikle):

*
!.gitignore

Ardından, bu dizinleri ekleyebilirsiniz ve yalnızca .gitignoreher dizindeki dosya eklenecektir - ancak bu, dizinlerin artık izleneceği (yani, klonlama sırasında oluşturulacağı) anlamına gelir.


7
Bu amaçla kullanılan .gitignore dosyaları boş olabilir.
kevpie

2
Klasörler bir üst .gitignoredosya tarafından yok sayılırsa boş olabilirler . Bu durumda, cevabım tam olarak.
KingCrunch

4
daha mantıklı ve daha basit olan, .gitkeep adlı bir dosya kullanmaktır, bu durumda .gitignore dosyasına herhangi bir şey yerleştirmeniz gerekmez.
Hedgehog

3
@kevpie Klasörde başka dosyalar da var ve bunların izlenmesini istemiyor. .Gitignore dosyası boşsa, bu dosyalar görünürde izlenecektir.
maliayas

aynı amaçla, .gitkeepyerine kullanıyorum .gitignore. bana daha mantıklı geliyor
Éderson T.Szlachta

22

Git boş dizinleri izlemez. İşlenmesini istediğiniz klasörlere boş yer tutucu dosyalar eklemeniz yeterlidir.

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

Bunu her "boş" klasör için de yapın. Daha sonra bu dosyaları göz ardı edebilirsiniz, bunlar gerçekten sadece git'in klonda bu dizinleri oluşturduğundan emin olmak için var olur. İçindeki girişler .gitignore, klasörler içindeki diğer dosyaların izlenmesini engeller (siz zorlamadıkça git add -f;)).


16

Bunu yapmanın belki de daha temiz bir yolu var. Saklamak istediğiniz klasörlerde alt .gitignore dosyalarına sahip olmak yerine. Bunu .gitignore köküne aşağıdaki gibi koyabilirsiniz:

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

Şimdi sadece boş .gitkeep dosyalarını yukarıda listelenen dizinlere oluşturun ve işleyin. Klasör daha sonra bu .gitkeep dosyalarıyla izlenecek, ancak içeriklerin hiçbiri izlenmeyecektir.


2
ya da sadece !*.gitkeep:)
Éderson T. Szlachta

Sorun, klasörlerin içeriğinin nasıl yok sayılacağı, ancak klasörlerin kendilerinin nasıl saklanacağıydı. Bu yüzden cevabımın geçerli olduğuna inanıyorum ve sadece! *. Gitkeep klasörlerin içeriğini görmezden gelmeyecek.
Joel Duckworth

3

Her birine bir .gitignore dosyası koyabilir (mipadi'nin söylediği gibi) veya kök .gitingnore dosyanızda buna benzer bir şey yapabilirsiniz.

/assets/*/
/assets/*.*

benim için iyi çalışıyor


Bu işe yarar, ancak yalnızca depo dosya uzantılarını kullanıyorsa. Gibi bir şey root/LICENSE-FILEdışlanmayacaktır.
Brett Zamir

2

Visual Studio, kabul edilen yanıtı beğenmedi. Çalışması için * işaretinden önce yeni bir satır eklemem gerekiyordu.

# Ignore all files in this folder.
*
!.gitignore
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.