Git *.dll
dosyaları yoksay yapan bir gitignore dosyam var ve bu aslında istediğim davranış. Ancak, bir istisna (yani taahhütte foo.dll
bulunabilmek) istersem bunu nasıl başarabilirim?
Git *.dll
dosyaları yoksay yapan bir gitignore dosyam var ve bu aslında istediğim davranış. Ancak, bir istisna (yani taahhütte foo.dll
bulunabilmek) istersem bunu nasıl başarabilirim?
Yanıtlar:
kullanın:
*.dll #Exclude all dlls
!foo.dll #Except for foo.dll
Gönderen gitignore :
İsteğe bağlı bir önek! paterni reddeden; önceki bir kalıp tarafından hariç tutulan eşleşen dosyalar tekrar dahil edilir. Reddedilen bir kalıp eşleşirse, bu daha düşük öncelikli kalıp kaynaklarını geçersiz kılar.
*.dll
ve projemin gitignore'u var !Libs/*.dll
ama bu işe yaramıyor gibi görünüyor.
!Libs/**/*.dll
.
!**/Libs/*.dll
klasör yapısına bağlı olarak.
!foo.dll
komut geçersiz kıldı. Yorumu ayrı bir satıra eklersem çalışır.
Git, şunu yazarsanız klasörleri yoksayar:
/js
ancak şunu yaparsanız istisnalar ekleyemez:
!/js/jquery
veya !/js/jquery/
veya!/js/jquery/*
Yazmalısınız:
/js/*
ve ancak böyle alt klasörler hariç
!/js/jquery
!/js/jquery/xyzlib
göz ardı edilmeyecek ...
/js/*
, !/js/jquery
, /js/jquery/*
, !/js/jquery/xyzlib
? Bunu yapmak için oldukça komik bir yol gibi ...
Bir dizindeki, ancak bazı alt dizinlerdeki her şeyi hariç tutmak için aşağıdakileri yapın:
wp-content/*
!wp-content/plugins/
!wp-content/themes/
Kaynak: https://gist.github.com/444295
!
Bir hariç tutma kuralından önce ekleyin .
Göre gitignore adam sayfası :
Desenler aşağıdaki biçime sahiptir:
...
- İsteğe bağlı bir önek! paterni reddeden; önceki bir kalıp tarafından hariç tutulan eşleşen dosyalar tekrar dahil edilir. Reddedilen bir kalıp eşleşirse, bu daha düşük öncelikli kalıp kaynaklarını geçersiz kılar.
!foo.dll
.gitignore veya (her seferinde!) git add -f foo.dll
Visual Studio ile çalışıyorsanız ve .dll dosyanız bir bin
klasörde yer alıyorsa, .dll dosyasının özel durumunu ekleyebilmeniz için önce bin klasörünün kendisi için bir özel durum eklemeniz gerekir. Örneğin
!SourceCode/Solution/Project/bin
!SourceCode/Solution/Project/bin/My.dll
Bunun nedeni, varsayılan Visual Studio .gitignore
dosyasının yok sayma kalıbı içermesidir[Bbin]/
Bu desen tüm bin klasörlerini (ve dolayısıyla içeriklerini) zapping eder, bu da içeriği gereksiz dahil etme girişiminde bulunur (klasörün kendisi zaten yok sayıldığı için).
Çalıştırılarak dosyamın neden istisna olmadığını anlayabildim
git check-ignore -v -- SourceCode/Solution/Project/bin/My.dll
Git Bash penceresinden. Bu [Bbin]/
kalıbı döndürdü .
Çözüm, git ignore kuralı ile istisna kuralı arasındaki ilişkiye bağlıdır:
Dosyalar / Farklı düzeylerdeki dosyalar veya Dosyalar / Alt Klasörler: şunları yapabilirsiniz:
*.suo
*.user
*.userosscache
*.sln.docstates
# ...
# Exceptions for entire subfolders
!SetupFiles/elasticsearch-5.0.0/**/*
!SetupFiles/filebeat-5.0.0-windows-x86_64/**/*
# Exceptions for files in different levels
!SetupFiles/kibana-5.0.0-windows-x86/**/*.suo
!SetupFiles/logstash-5.0.0/**/*.suo
Git 2.7.0'dan beri Git istisnaları dikkate alacaktır. Resmi sürüm notlarından:
- Daha sonra "! / Abc / def" nin aynı .gitignore dosyasında görüntülenen daha eski bir "/ abc" yi geçersiz kılmasına izin verin.
https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.7.0.txt