Bu sinir bozucu Mac OS X .DS_Store
dosyalarını Git deposundan nasıl kaldırabilirim ?
Bu sinir bozucu Mac OS X .DS_Store
dosyalarını Git deposundan nasıl kaldırabilirim ?
Yanıtlar:
Mevcut dosyaları depodan kaldırın:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Satırı ekleyin
.DS_Store
dosyaya .gitignore
(zaten yoksa ya oluşturulmuş) depo üst düzeyinde bulunabilir. Bunu üst dizindeki bu komutla kolayca yapabilirsiniz
echo .DS_Store >> .gitignore
Sonra
git add .gitignore
git commit -m '.DS_Store banished!'
-exec
başlatılırken git-rm
, xargs
tüm yolları tek bir komut satırına koyacaktır. Çoğunlukla tercih ederim xargs
çünkü birçok özel karakterden kaçmak için endişelenmem gerekmiyor.
.DS_Store
olarak .gitignore
çalışıyor mu? Yani, görmezden gelecek some/level/of/folders/.DS_Store
mi?
Benzado ve webmat'ın cevaplarını birleştirmek, güncellemek, repoda bulunmayan git rm
dosyalarda başarısız olmak ve herhangi bir kullanıcı için genel olarak yapıştırılabilir hale getirmek:
# remove any existing files from the repo, skipping over ones not in repo
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
# specify a global exclusion list
git config --global core.excludesfile ~/.gitignore
# adding .DS_Store to that list
echo .DS_Store >> ~/.gitignore
~/.gitignore
benim küresel dışlar dosya olarak sahip bir acı olduğunu bulundu. Ben bu benim ev dizinden dışlamak istediğiniz dosya yok yok küresel görmezden istiyorum. Bunun ~/.gitexcludes
yerine aynı direktifle kullanıyorum:core.excludesfile
Bu sorunu çözmek için en iyi çözüm, bu dosyaları sisteminizdeki tüm git depolarından Global olarak yok saymaktır. Bu, aşağıdaki gibi genel bir gitignore dosyası oluşturarak yapılabilir:
vi ~/.gitignore_global
Aşağıdaki gibi dosyaları görmezden gelmek için Kurallar Ekleme:
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
Şimdi bu dosyayı global git config'inize ekleyin:
git config --global core.excludesfile ~/.gitignore_global
Düzenle:
Simgeler, uygulama varlıkları olarak işlem görmeleri gerekebileceğinden kaldırıldı.
Bazı durumlarda, bazı dosyaları dünya genelinde yok saymak isteyebilirsiniz. Benim için .DS_Store bunlardan biri. Bunu nasıl yapacağınız aşağıda açıklanmıştır:
git config --global core.excludesfile /Users/mat/.gitignore
(Veya istediğiniz herhangi bir dosya)
Ardından dosyayı tıpkı bir repo'nun .gitignore'u gibi düzenleyin. Mutlak bir yol kullanmanız gerektiğini düşünüyorum.
Aşamalı kullanım değişikliklerinden dolayı dosyaları kaldıramıyorsanız:
git rm --cached -f *.DS_Store
Terminali açın ve "cd <ProjectPath>" yazın
Mevcut dosyaları kaldırın:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
nano .gitignore
Bunu ekle .DS_Store
"ctrl + x" yazın
"Y" yazın
Dosyayı kaydetmek için girin
git add .gitignore
git commit -m '.DS_Store removed.'
nano .gitignore
yoksa dosyayı oluşturur, bu komut proje kök klasöründen yürütülmelidir
En çok oy alan cevap harika, ama benim gibi çaylaklara yardımcı olmak için .gitignore dosyasını nasıl oluşturacağınız, düzenleyeceğiniz, kaydedeceğiniz, git'e zaten eklemiş olabileceğiniz dosyaları nasıl kaldıracağınız, ardından dosyayı Github'a nasıl göndereceğiniz aşağıda açıklanmıştır.
.Gitignore dosyasını oluşturun
Bir .gitignore dosyası oluşturmak için, yalnızca touch
belirtilen ada sahip boş bir dosya oluşturan dosyayı oluşturabilirsiniz. Şu komutu kullanabilmemiz için .gitignore adlı dosyayı oluşturmak istiyoruz:
touch .gitignore
Dosyaları yoksay
Şimdi git'e DS Mağazası dosyalarını .gitignore'unuza yoksaymasını söyleyen satırı eklemelisiniz. Bunu yapmak için nano düzenleyiciyi kullanabilirsiniz.
nano .gitignore
Nano güzel çünkü ondan nasıl çıkacağınıza dair talimatlar içeriyor. ( Ctrl- Okaydetmek, Ctrl- Xçıkmak için)
Yok sayılacak bazı yaygın dosyaları listeleyen bu Github özetine ait bazı fikirleri kopyalayıp yapıştırın . Bu soruyu cevaplamak için en önemlileri:
# OS generated files #
######################
.DS_Store
.DS_Store?
# Yorumdur ve dosyanızı büyüdükçe düzenlemenize yardımcı olur.
Bu Github makalesinde ayrıca bazı genel fikirler ve yönergeler vardır.
Git'e önceden eklenmiş dosyaları kaldırın
Son olarak, bu DS Mağazası dosyalarını dizininizden kaldırmanız gerekir.
En iyi oyu alan cevaptan bu harika komutu kullanın. Bu işlem dizininizdeki tüm klasörlerden geçecek ve bu dosyaları git'ten kaldıracaktır.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
.Gitignore'u Github'a kadar itin
Son adım, .gitignore dosyanızı gerçekten yürütmeniz gerekir.
git status
git add .gitignore
git commit -m '.DS_Store banished!'
Ben işe almak için yukarıdaki git rm git-rm değiştirmek zorunda kaldı:
find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
kullanarak silin git-rm
ve ardından .gitignore
yeniden eklenmelerini durdurmak için .DS_Store ekleyin . Ayrıca, hepsini birlikte oluşturulmalarını durdurmak için blueharvest'i de kullanabilirsiniz.
DS_Store dosyalarını her klasöre ve alt klasöre kaldırmak istiyorsanız:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Bunları yoksay:
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
Aşağıdaki benim için en iyi çalıştı. Eşleşmeyen dosyaları ve yerel değişikliklere sahip dosyaları işledi. Referans olarak, bu git 1.7.4.4 çalıştıran bir Mac 10.7 sistemindeydi.
Bulun ve kaldırın:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f
Ayrıca global bir core.excludesfile ayarlayarak .DS_Store'u tüm depolarda yoksayıyorum.
İlk olarak, dosyayı oluşturun (henüz mevcut değilse):
touch ~/.gitignore
Ardından aşağıdaki satırı ekleyin ve kaydedin:
.DS_Store
Şimdi git'i global olarak dosyaya saygı duyacak şekilde yapılandır:
git config --global core.excludesfile ~/.gitignore
Snipplr'den gelen aşağıdaki satırın .DS_Store
, yerel modifikasyonlara sahip biri de dahil olmak üzere hepsini silmede en iyisini yaptığını buldum .
find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print
--cached
seçeneği, .DS_Store
yine de çoğaltılacağı için yerel tutar .
Ve yukarıda da belirtildiği gibi, .DS_Store
projenizin kökündeki .gitignore dosyasına ekleyin . O zaman artık (depoların) görünüründe olmayacak.
Partiye biraz geç kaldım, ama iyi bir cevabım var. .DS_Store dosyalarını kaldırmak için bir terminal penceresinden aşağıdaki komutları kullanın, ancak 'find' ile dosyaları silmeye çok dikkat edin. -Name seçeneğiyle belirli bir ad kullanmak, onu kullanmanın daha güvenli yollarından biridir:
cd directory/above/affected/workareas
find . -name .DS_Store -delete
Onları önce ve sonra listelemek istiyorsanız "-delete" yazabilirsiniz. Bu onların gittiklerini garanti eder.
~ / .Gitignore_global tavsiyesi ile ilgili olarak: burada dikkatli olun. Bu güzel dosyayı her çalışma alanının en üst düzeyindeki .gitignore içine yerleştirmek ve taahhüt etmek istersiniz, böylece repo'nuzu klonlayan herkes kullanımından yararlanır.
Bu çalışacak:
find . -name "*.DS_Store" -type f -exec git-rm {} \;
Bu isimleri ile biten tüm dosyaları siler .DS_Store
dahil ._.DS_Store
.
"*.DS_Store"
yıldız işaretinin find
kabuk tarafından genişletilmek yerine geçirilmesi gerekir .
Bu benim için çalıştı, yukarıdan iki cevaptan oluşan kombo:
Bu sorunu çözmek için birkaç çözüm vardır. .DS_Store dosyaları oluşturmaktan kaçınmak için, klasörleri görüntülemek için OS X Finder'ı kullanmayın. Klasörleri görüntülemenin alternatif bir yolu, UNIX komut satırını kullanmaktır. .DS_Store dosyalarını kaldırmak için DS_Store Terminator adlı üçüncü taraf bir ürün kullanılabilir. .DS_Store dosyalarını tüm sistemden silmek için bir UNIX kabuk komutu kullanılabilir. Terminal'i Uygulamalar'dan Başlatın: Yardımcı Programlar UNIX kabuk istemine aşağıdaki UNIX komutunu girin: sudo find / -name ".DS_Store" -depth -exec rm {} \; Parola istendiğinde Mac OS X Yönetici parolasını girin.
Bu komut, dosya sisteminin kökünden (/) tüm makine boyunca başlayarak tüm .DS_Store oluşumlarını bulmak ve kaldırmaktır. Bu komutu zamanlanmış görev olarak çalışacak şekilde yapılandırmak için aşağıdaki adımları izleyin: Terminal'i Uygulamalar'dan başlatın: Yardımcı Programlar UNIX kabuk istemine aşağıdaki UNIX komutunu girin:
sudo crontab -e Parola istendiğinde Mac OS X Yönetici parolasını girin. Vi düzenleyicisine girdikten sonra klavyenizdeki I harfine bir kez basın ve aşağıdakileri girin:
15 1 * * * root find / -name ".DS_Store" -depth -exec rm {} \;
Bu, aşağıdaki biçime sahip crontab girişi olarak adlandırılır:
Dakika Saat GünOfAyın Ay GünOfWeek Kullanıcı Komutu.
Crontab girişi, komutun sistem tarafından root adı verilen hesap tarafından her gün 01: 15'te otomatik olarak yürütüleceği anlamına gelir.
Komut, en baştan sonuna kadar bulmaktan başlar. Sistem çalışmıyorsa, bu komut yürütülmez.
Girişi kaydetmek için Esc tuşuna bir kez basın, ardından Shift + z + z tuşlarına aynı anda basın.
Not: 4. Adımdaki bilgiler yalnızca vi düzenleyicisi içindir.
bunu dosyanıza ekleyin .gitignore
#Ignore folder mac
.DS_Store
bunu kaydet ve taahhütte bulun
git add -A
git commit -m "ignore .DS_Store"
ve şimdi bunu tüm taahhütleriniz için görmezden geliyorsunuz
Bu dosyadan sonsuza kadar kurtulmanın ve bir daha asla endişelenmenizin en iyi yolu
genel bir .gitignore dosyası oluşturun:
echo .DS_Store >> ~ / .gitignore_global
Ve git bu dosyayı tüm depolarınız için kullanmak istediğinizi bildirin:
git config - global core.excludesfile ~ / .gitignore_global İşte bu kadar! .DS_Store yolunuzdan çıktı.
.DS_STORE
Yerel olarak kaldırmanıza gerek yok
Sadece .gitignore
dosyaya ekleyin
.Gitignore dosyası, Git'e bir projede hangi dosya veya klasörlerin yoksayılmasını bildiren bir metin dosyasıdır.
Komutları
nano .gitignore
.DS_Store
Sonra tıklayınCTRL+X > y > Hit Return
git status
Yaptığınız değişikliklere son bir göz atmak içingit add .gitignore
git commit -m 'YOUR COMMIT MESSAGE'
git push origin master