2011-11-06 20 views
50

Buna benzer birkaç soru var, fakat cevapların hiçbiri benim için çalışmıyor. Aslında tüm benim "Mantık" için git depo yapıyorum -.gitignore tüm dosyaları yok sayıp sonra tekrar tekrar * .foo

Herkes bu haklı nasıl merak edilirse

(.foo * dosyalar hariç benim depo altındaki klasörlerde her şeyi görmezden istiyorum projeler - macdaki müzik yazılımı - ama sadece gerçek proje dosyalarını saklamak istiyorum * .logic)

Bunu heceleyeceğim, hepimiz aynı plakadayız.

Kur:

mkdir temp 
cd temp 
mkdir testdir 
cd testdir 
touch include.foo 
touch dontinclude.bad 
cd.. 
git init 
touch .gitignore 

bu in yapıştırın

# Ignore all 
/* 

# But not these files... 
!.gitignore 
!*.foo 

git durumu

Ve izlenmeyen tek .gitignore için İşte sıfırdan başlayarak böyle yapar dosya .gitignore

'Git add' yazdım eğer

. - hiçbir değişiklik, sadece .gitignore görülür ve benim 2 dosyam göz ardı edilir.

Neden bu işe yaramaz ve çalışmasını sağlamak için yukarıdaki prosedürü nasıl değiştirirsiniz?

İşte .gitignore dosyasını nereden aldığım son derece benzer bir soru. Ben git --version 1.7.7 kullanıyorum (aynı zamanda 1.7.3 denedik) - .gitignore to ignore all files, then recursively allows files of a certain type

+0

Bekleyin, eklediniz .gitignore' ve 'git commit -m 'eklendi gitignore" '? – Nic

cevap

96

Senin sorunun başında /* desen üst düzeydeki tüm dosyaları ve dizinleri eşleşen olmasıdır - bu yüzden, testdir dahil testdir'un içindeki her şey göz ardı edilir.

İstediğin şudur: Bu yapılandırma ile bir git add . yaptığınızda

# Ignore everything 
* 
# Don't ignore directories, so we can recurse into them 
!*/ 
# Don't ignore .gitignore and *.foo files 
!.gitignore 
!*.foo 

, size değişiklikler taahhüt edilecek olarak listelenen yalnızca .gitignore ve *.foo dosyaları var bulmalıdır.

+0

Ancak, bir kenara, .logic dosyaları ile benim gerçek dünya sürümünde, esrarengiz bir şekilde işe yaramıyor. Git repo'yu yeniden oluşturdum, milyonlarca kez kontrol ettim, .gitignore'u tam olarak kopyaladım. -madı "* .logic" dosyaları yığınları döndürür ama bu .gitignore tüm * .logic dosyaları yok sayar ... aptalca bir şey kesinlikle devam ediyor ... sonunda nihayet çatladığımda bir takip yorum değerinde – PandaWood

+0

@PandaWood: '* .logic' dosyalarınızı dışarıda bırakacak bir desene sahip bir dosyaya işaret eden' ​​/ .gitconfig' içinde 'core.excludesfile' ayarlanmamış. – camh

+0

Bunu anlamadım, ancak bu .logic dosyalarını geçen gün DropBox'a yüklemeye çalıştığımda bir ipucu verildi, başarısız oldu. Başka bir ipucu, ekledim! * .txt to, totemore, birkaç metin dosyam var ve izlenen listede görünmeye başladılar, endişe yok. Yani Mantık "dosyaları" (örneğin bla.logic) aslında "paketleri" - Mac Finder'da tıklattığınız ve "İçindekileri Göster" seçeneğini seçtikleri - bu nedenle, gitmedeki * .logic çalışmıyor ...Git bu "dosyaları" nasıl saklayabilirim, sonra bir sonraki sorum olabilir ;-) – PandaWood

İlgili konular