.Gitignore ve .gitkeep arasındaki farklar nelerdir?


1926

Arasındaki farklar nelerdir .gitignoreve .gitkeep? Farklı bir isimle aynı şey mi, yoksa ikisi de farklı bir işleve hizmet ediyor mu?

İle ilgili çok fazla belge bulamıyorum .gitkeep.

Yanıtlar:


3439

.gitkeep belgelenmez, çünkü Git'in bir özelliği değildir.

Git tamamen boş bir dizin ekleyemez . Git'teki boş dizinleri izlemek isteyen kişiler .gitkeep, bu dizinlere çağrılan dosyaları yerleştirme kuralını oluşturmuşlardır . Dosya herhangi bir şey olarak adlandırılabilir; Git bu isme özel bir önem vermez.

İzlenmesi .gitignoreiçin boş dizinlere bir dosya ekleme konusunda rakip bir kural vardır , ancak bazı insanlar bunu kafa karıştırıcı olarak görür, çünkü amaç boş dizinleri görmezden gelmemek; .gitignoreizlenmemiş dosyaları ararken Git tarafından yoksayılması gereken dosyaları listelemek için de kullanılır.


414
READMEAksi halde boş bir alt dizine, bu alt dizinin ne için kullanılacağı hakkında biraz bilgi içeren bir dosya koymak daha iyi bir çözüm olmaz mıydı ? .gitkeepAslında git'in bir parçası olmayan bir dosyaya sahip olmak kafa karıştırıcı görünüyor .
tamouse

423
@tamouse birçok kez, boş dizinin yolu (örn. klasör isimleri) amacını ifade etmek için yeterlidir (örnekler: şablonlar / önbellek, upload / thumbs vb.). Bu durumlarda, bunların her birine bir benioku koymak gereksizdir.
Halil Özgür

16
boş dizinleri takip etmek isteyen kişiler bir README'de dizinin oluşturulması gerektiğini ya da derleme araçlarını kullanarak ya da dizinin var olmasını gerektiren herhangi bir araçla dizinleri oluşturduğunu belirtmelidir; /

32
@tamouse, @omouse: .gitignoreİki satırlı bir dosya: *ve !.gitignoreolup biteni iletmek için fazlasıyla netlik. Daha fazla ayrıntı gerekiyorsa, # sözdizimini kullanarak dosyanın üstüne bir yorum ekleyin .
Droogans

63
Git, boş klasörleri izlemeyen tek kaynak kontrol sistemi olmadığından , popüler Rails çerçevesinin bu boş klasörleri korumak .keepyerine dosyaları kullanarak bu kuralı biraz değiştirdiğini fark etmekte .gitkeepfayda var. Daha fazla ayrıntı için: github.com/rails/rails/issues/2800
Claudio Floreani

330

.gitkeepsadece bir yer tutucudur. Sahte bir dosya, Git sadece dizini izlediğinden Git dizini unutmaz.


Boş bir dizin istiyorsanız ve Git için 'temiz' kaldığından emin olun, .gitignoreiçinde aşağıdaki satırları içeren bir satır oluşturun :

# .gitignore sample
###################

# Ignore all files in this dir...
*

# ... except for this one.
!.gitignore

Git için yalnızca bir tür dosyanın görünür olmasını istiyorsanız, .gitignore ve tüm .txtdosyalar hariç her şeyi nasıl filtreleyeceğinize ilişkin bir örnek :

# .gitignore to keep just .txt files
###################################

# Filter everything...
*

# ... except the .gitignore...
!.gitignore

# ... and all text files.
!*.txt

('#' yorumları gösterir.)


3
Bu uygulamayı kendim seviyorum. Bu dizindeki kaynak kod varsa o test sırasında zaten oluşturulmuş olacaktır geçici / cache / kullanıcı içeriği de .gitignore bu dosyalara sahip sizi neden olan .gitkeep ve genel gerek olmazdı
chrisan

1
Neden !önünde ihtiyacın var .gitignore? Noktadan kaçmak için mi?
Will

7
@Will - Hayır, !genellikle programlamada olduğu gibi aşağıdaki bölümü reddeder.
sjas

3
Koymak için gerek yoktur !.gitignore(sadece emin klasörün var olmak için her şeyi, ya da hiçbir şey yok saymak için "*") uygun içeriği ile ekleyin dosyayı görmezden bir git de, ya sonra düzenlemeyi dosyası eklemek veya kuvvet ornek daha .
AD7six

13
Bağlantınızdan: Since the git ignore file is already in the repo it is not necessary to not-ignore it - it is already tracked.------ Değilse ve güçlü bir ekleme yapmazsanız, bunu unutabilirsiniz. Önemsiz durumlarda, sorun değil, ancak daha büyük bir dosya ise üzgün olabilirsiniz. Kullanmak !.gitignorekendinizi ayağınıza vurmanızı önler. Geçmişte kendimi yakmış olmayı tercih ederim.
sjas

125
.gitignore

dizininizde git'in depoya ekleyemeyeceği ya da güncellemeyeceği dosyaların listesini içeren bir metin dosyasıdır.

.gitkeep

Git depoya boş dizinler kaldırdığı veya eklemediği için .gitkeep, depoda boş dizinleri tutmak için bir tür hack'tir (resmen Git'in bir parçası olarak adlandırıldığını sanmıyorum).

touch /path/to/emptydirectory/.gitkeepDosyayı eklemek için sadece bir tane yapın, Git artık depoda bu dizini koruyabilir.


18
.gitignoreHer seferinde her klasörün tam yolunu belirtmek istemiyorsanız, istediğiniz kadar s alabilirsiniz .
sjas

1
Boş dizinler listesini .gitkeepdosyaya geçmeye çalışıyorum ama boş dizinleri izlemiyor, sadece .gitkeepdosyanın bulunduğu klasör izini . neden öyle ?
Pardeep Jain

2
.gitkeep .gitignore gibi çalışmaz. Saklanacak dizinlerin listesi değil. Sadece saklamak istediğiniz dizinde yaşayan boş bir dosyadır. İstediğiniz herhangi bir şey olarak adlandırılabilir .keep, vb. Böylece / foo / bar gibi bir dizine sahip olabilirsiniz ve gitkeep dosyası /foo/bar/.gitkeep olacaktır
Jim Munro

@sjas birden fazla .gitignores'ye sahip olmak sizi her seferinde her klasöre giden tam yolu belirtmekten nasıl kurtarır? Sanırım bariz bir şey eksik.
Willwsharp
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.