Dosyayı yalnızca Git'teki kök klasörden hariç tutma


399

.gitignoreEklenen bazı dosyaları hariç tutmak için dosya kullanmanın farkındayım , ancak config.phpkaynak ağacında birkaç dosya var ve diğer revizyon kontrolü altında tutarken kökünde bulunan yalnızca bir tanesini dışlamam gerekiyor.

Bunun .gitignoregerçekleşmesi için ne yazmalıyım ?

Yanıtlar:


588

Gönderen belgeler :

Kalıp eğik çizgi / içermiyorsa, git bir kabuk glob kalıbı olarak davranır ve .gitignore dosyasının konumuna göre yol adına (bir .gitignore'dan değilse çalışma ağacının en üst düzeyine göre) bir eşleşme olup olmadığını denetler. dosya).

Başında eğik çizgi, yol adının başlangıcıyla eşleşir. Örneğin, "/*.c", "cat-file.c" ile eşleşir, ancak "mozilla-sha1 / sha1.c" ile eşleşmez.

Yani kökünüze aşağıdaki satırı eklemelisiniz .gitignore:

/config.php

1
Teşekkür ederim! Bu şekilde denedim, ama nedense işe yaramadı. Muhtemelen bir yere yanlış
yazılmıştır

1
Ya bir dosya değil, bir klasörse ve bu klasörü repo root, içerdiği dosyalar ve tüm alt klasörler ve dosyaları içinde yoksaymak istiyorum? /folder/?
CodeManX

11
Ya çalışır /folder/ya /folderda çalışır, ancak eğik çizgilerin uçlara eklenmesi eşleşmeyi yalnızca klasörlerle sınırlar. Kök dizinde 'foo' adında bir dosyanız /foo/olsaydı , yoksaymazdı, /fooolurdu.
tehDorf

Dosyayı önceden taahhüt etmişseniz, komutu çalıştırın git rm --cached <file>, aksi takdirde dosya yok sayılmaz. İtibaren: stackoverflow.com/a/1274447
Bruno Polo


29

Git'in eski sürümleri için önce bir yok sayma kalıbı tanımlamanız ve hemen (bir sonraki satırda) hariç tutmayı tanımlamanız gerekir. [1.9.3 sürümünde test edildi (Apple Git-50)]

/config.php
!/*/config.php

Daha sonraki sürümler yalnızca aşağıdakileri gerektirir [2.2.1 sürümünde test edilmiştir]

/config.php

17

Yukarıdaki çözüm işe yaramazsa, şunu deneyin:

#1.1 Do NOT ignore file pattern in  any subdirectory
!*/config.php
#1.2 ...only ignore it in the current directory
/config.php

##########################

# 2.1 Ignore file pattern everywhere
config.php
# 2.2 ...but NOT in the current directory
!/config.php

Bu benim için gerçekten işe yarıyor, oysa /config.phpyalnız olmadı. Neden olmadığını merak ediyorum. Bir fikrin var mı?
iago-lito '30 Ocak 1919'da

@ iago-lito belirli bir proje üzerinde çalışıyorsanız ve belirli bir dizinde bazı file.ext'i nasıl görmezden gelmek ve aynı zamanda onu her yerde görmezden gelmek için mücadele ediyorsanız, bunu /home/me/.gitignore dosyasına koyun: /home/me/path/to/my/project/some/folder/file.ext VEYA file.ext dosyasını her yerde ve daha sonra / home / me / path / to / my / project / some / folder / .gitignore dosyası, bu dosyayı sadece bu dizinde görmezden gelmek için bu! Her klasör ... ebeveyn .gitignore dosyanın herhangi (ler) ayarlarını geçersiz kılmak için kendi .gitignore dosyasına sahip olabilir
Drugan

Hm. Bu, repo'nun diğer kullanıcıların ~/.gitignorekendi makinelerinde farklı dosyalara sahip olup olmamasına bağlı olarak farklı davranabileceği anlamına geliyor , değil mi? .. Ayrıca, benim açımdan: "Yukarıdaki çözüm işe yaramazsa" neden yazmadınız?
iago-lito '

evet, projeniz bilinmeyen bir ortamda mevcutsa, proje kök klasörünüzün üzerinde bulunan .gitignore dosyalarına asla güvenmemelisiniz. Config.php gibi dosya adının oldukça yaygın olduğunu unutmayın, bu nedenle kök .gitignore dosyanızdaki bu dosya için olası tüm ayarları geçersiz kılın.
drugan
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.