2011-02-23 18 views
54

Son zamanlarda Git'i kullanmaya başladım ve sadece bir şeyle ilgili sorun yaşıyorum. İçeriğini takip etmeden dizinleri nasıl takip edebilirim? Örneğin, üzerinde çalıştığım site yüklemelere izin veriyor. Ben uploads dizini izlemek, böylece dallanma, vb. Oluşturulduğunda, ancak içerdiği dosyaları (şube veya gerçek dosyaları master olarak geliştirirken) içerdiği açık değildir. (Dizinin tamamını göz ardı eden)Dizinleri nasıl izleyeceğiz, ancak dosyaları Git ile birlikte değil?

uploads/*.*

da denediniz: Benim .gitignore olarak

ben şu var

uploads/

Bu dizin olabilir de ihtiva alt dizinleri (uploads/başparmak/uploads/videos /) Bunları takip edip dosyalarını takip edebilmek istiyorum.

Bu, Git ile mümkün mü? Bir cevap bulamadan her yeri aradım.

+0

Git, yalnızca dosyaları izler.Yapabilecekleriniz git kancaları ile oynamak ve dizin listesini (kancalar kullanılarak otomatik olarak oluşturulmuş) içerecek bir dosyayı takip etmektir. Bunun mümkün olup olmayacağından emin değilim. –

+0

Daha somut: Git parçaları _content_ ve (git için) boş bir dizin içerik değildir. Kabul edip edemeyeceğinizin ya da olmamanın bir başka “geçici çözümü” olarak,/build/when-need-dizinindeki dizinleri oluşturmayı düşünebilirsiniz. Ancak: ".placeholder" -solution özelliğini de kullanıyorum;) – KingCrunch

+0

.placeholder kullanmak yerine .gitignore dosyası kullanıyorum. Bu sadece dizindeki istisnalara dikkat etmekle kalmaz, aynı zamanda yer tutucu olarak da işlev görür. – Abizern

cevap

72

Git dizinleri takip etmiyor, dosyaları izliyor, bu yüzden en az bir dosya izlemeniz gerekiyor.

upload/* 

Bunu yapabilirsin: Yani .gitignore dosya varsayarak şuna benzer Eğer -f unutursanız

$ touch upload/.placeholder 
$ git add -f upload/.placeholder 

göreceksiniz:

 
$ git add upload/.placeholder 
The following paths are ignored by one of your .gitignore files: 
upload 
Use -f if you really want to add them. 
fatal: no files added 

Sonra bunu yaptığında git status göreceksiniz:

 
# On branch master 
# 
# Initial commit 
# 
# Changes to be committed: 
# (use "git rm --cached ..." to unstage) 
# 
# new file: upload/.placeholder 
# 

Açıkçası o zaman yapabilirsiniz:

$ touch upload/images/.placeholder 
$ git add -f upload/images/.placeholder 
+0

Teşekkürler, ihtiyacım olan şey bu. – Ben

+8

Yer tutucu için ortak bir sözleşme, bir gitignore dosyasıdır. – Cascabel

+2

@Jefromi Nitekim Abizern'e yaptığım yorumlar, '.gitignore' dosyasını yer tutucu olarak kullanmayı hiç düşünmemişti. –

31

Bu here hakkında yazdı.

Dizinde bir .gitignore ekleyin.

+1

Güzel küçük makale ve yorumlar! Yer tutucu dosyası olarak .gitignore kullanmayı hiç düşünmemiştim .... –

+0

Teşekkürler. Sadece bir yazı yazıp yorum yazarak bir şeyler öğrendim. – Abizern

+0

Şimdi '.gitkeep' – tarabyte

10
buldum

En blogpost bu içeriğin İşte

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

sahip olan, yükleme klasöründeki bir .gitignore dosyası dahil etmektir How can I add an empty directory to a Git repository?

+2

yapabilirim Bu yuvalanmış klasör yapıları ile çalışmıyor. – shashwat

İlgili konular