.Gitignore dosyasına .DS_Store ekledim, ancak her dizinde ve alt klasörde değil, yalnızca kök dizinde .DS_Store'u yok sayıyor gibi görünüyor.
Bunu nasıl düzeltirim?
.Gitignore dosyasına .DS_Store ekledim, ancak her dizinde ve alt klasörde değil, yalnızca kök dizinde .DS_Store'u yok sayıyor gibi görünüyor.
Bunu nasıl düzeltirim?
Yanıtlar:
Sanırım yaşadığınız sorun, bazı önceki işlemlerde, yanlışlıkla depoya .DS_Store dosyaları eklemiş olmanızdır. Tabii ki, bir dosya deponuzda izlendikten sonra, geçerli bir .gitignore dosyasındaki bir girişle eşleşse bile izlenmeye devam edecektir.
Deponuza eklenen .DS_Store dosyalarını el ile kaldırmanız gerekir. Kullanabilirsiniz git rm --cached .DS_Store
. Kaldırıldıktan sonra git bunu görmezden gelmelidir. Yalnızca kök .gitignore dosyasında aşağıdaki satırı gerektiğinde: .DS_Store
. Dönemi unutma!
git rm --cached .DS_Store
yalnızca .DS_Store
geçerli dizinden kaldırır . find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Depodan tümünü kaldırmak için kullanabilirsiniz .DS_Stores
.
Keçe ipucu: Büyük olasılıkla .DS_Store dosyalarını dahil etmek istemediğiniz için genel bir kural oluşturun. İlk olarak, bir yerde küresel bir .gitignore dosyası oluşturun, örn echo .DS_Store >> ~/.gitignore_global
. Artık tüm depolar için kullanmak için git söyle: git config --global core.excludesfile ~/.gitignore_global
.
Bu sayfa sorunuzu yanıtlamama yardımcı oldu: https://help.github.com/articles/ignoring-files
Ekle **/.DS_Store
içine .gitignore
alt dizin için
.DS_Store
Zaten taahhüt edilmişse :
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Bunları tüm depolarda yoksaymak için: (bazen adı verilir ._.DS_Store
)
echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global
git rm --cached your_file
ilk kullanın
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
, olmalıdır : stackoverflow.com/questions/18393498/…
-f
klasörlerde açık dosyalarınız varsa ekleme yapılması gerekiyor gibi görünüyor :find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
.DS_Store git deponuza hiç eklenmediyse, .gitignore dosyanıza eklemeniz yeterlidir.
Bir dosyanız yoksa, adlı bir dosya oluşturun.
.gitignore
Uygulamanızın kök dizinine yazıp
**/.DS_Store
İçinde. Bu asla .DS_Store dosyasının git'inizde gizlenmesine izin vermez.
Ancak, zaten oradaysa, terminalinize yazın:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
ardından .DS_Store'u uzak deponuzdan kaldırmak için değişiklikleri uygulayın ve itin:
git commit -m "Remove .DS_Store from everywhere"
git push origin master
Ve şimdi .gitignore dosyanıza .DS_Store'u ekleyin ve ardından son 2 kod parçasını tekrar girin ve itin (git commit ..., git push ...)
*
ya **
elde etmek istediğinize bağlı. Kabuğa dizinlerde nasıl gezinileceğini söylemenin bir yoludur. Bu stackoverflow cevabı tamamen açıklıyor stackoverflow.com/a/28199633/4092170
Adım 1, tüm *.DS_store
dosyaları silin . Biri koşabilir
git rm -f *.DS_Store
ancak rm -f
bir yazım hatası varsa bunun tehlikeli olabileceğini unutmayın! İkinci adım: ekle
*.DS_Store
.DS_Store
.gitignore için. Bu benim için çalıştı!
Ayrıca --cached
, Edward Newell'in orijinal yanıtında belirttiği gibi, yerel .DS_store dosyalarını korumak için bayrağı auco'nun cevabına ekleyebilirsiniz . Değiştirilmiş komut şuna benzer: find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
..cheers ve teşekkürler!
Adım: 1) Bu komutu kullanarak mevcut dosyaları kaldırın
bulmak. -adı .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Adım: 2) .gitignore dosyanıza .DS_Store'u ekleyin
Adım: 3) .gitignore git add .gitignore git commit -m dosyasındaki değişikliklerinizi yapın ".DS_Store" kaldırıldı
$ git rm ./*.DS_Store
- tüm .DS_Store'u git'ten kaldırın$ echo \.DS_Store >> .gitignore
- gelecekte .DS_Store'u yoksaytaahhüt ve it