Git *.dlldosyaları yoksay yapan bir gitignore dosyam var ve bu aslında istediğim davranış. Ancak, bir istisna (yani taahhütte foo.dllbulunabilmek) istersem bunu nasıl başarabilirim?
Git *.dlldosyaları yoksay yapan bir gitignore dosyam var ve bu aslında istediğim davranış. Ancak, bir istisna (yani taahhütte foo.dllbulunabilmek) 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.
*.dllve projemin gitignore'u var !Libs/*.dllama bu işe yaramıyor gibi görünüyor.
!Libs/**/*.dll.
!**/Libs/*.dllklasör yapısına bağlı olarak.
!foo.dllkomut 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/jqueryveya !/js/jquery/veya!/js/jquery/*
Yazmalısınız:
/js/*
ve ancak böyle alt klasörler hariç
!/js/jquery
!/js/jquery/xyzlibgö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 binklasö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 .gitignoredosyası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