Gitが*.dll
ファイルを無視するgitignoreファイルがあり、それが実際に私が望む動作です。ただし、例外が必要な場合(つまり、foo.dll
をコミットできるようにする場合)、これをどのように達成できますか?
つかいます:
*.dll #Exclude all dlls
!foo.dll #Except for foo.dll
gitignore から:
オプションのプレフィックス!パターンを無効にします。以前のパターンで除外された一致するファイルは再び含まれます。否定されたパターンが一致する場合、これは優先順位の低いパターンのソースをオーバーライドします。
Gitは次の場合にフォルダーを無視します。
/js
ただし、例外を追加することはできません:!/js/jquery
または!/js/jquery/
または!/js/jquery/*
あなたが書く必要があります:
/js/*
そして、あなたはこのようなサブフォルダを除外することができます
!/js/jquery
単にgit add -f path/to/foo.dll
することができます。
.gitignore
は、通常の追跡およびgit add .
などのファイルのみを無視します
ディレクトリ内のすべてのサブディレクトリを除外するには、次の手順を実行します。
wp-content/*
!wp-content/plugins/
!wp-content/themes/
除外ルールの前に!
を追加するだけです。
gitignore man page によると:
パターンの形式は次のとおりです。
...
- オプションのプレフィックス!パターンを無効にします。以前のパターンで除外された一致するファイルは再び含まれます。否定されたパターンが一致する場合、これは優先順位の低いパターンのソースをオーバーライドします。
!foo.dll
in .gitignore、または(毎回)git add -f foo.dll
Visual Studioで作業していて、.dllがbin
フォルダーにある場合、.dllの例外を追加する前に、特定のbinフォルダー自体に例外を追加する必要があります。ファイル。例えば。
!SourceCode/Solution/Project/bin
!SourceCode/Solution/Project/bin/My.dll
これは、デフォルトのVisual Studio .gitignore
ファイルに[Bbin]/
の無視パターンが含まれているためです
このパターンは、すべてのbinフォルダー(およびその結果としてのコンテンツ)をザッピングします。これにより、コンテンツの冗長化が試みられます(フォルダー自体は既に無視されているため)。
実行することでファイルが除外されない理由を見つけることができました
git check-ignore -v -- SourceCode/Solution/Project/bin/My.dll
git Bashウィンドウから。これにより、[Bbin]/
パターンが返されました。
解決策は、git ignoreルールと例外ルールの関係に依存します。
さまざまなレベルのファイル/ファイルまたはファイル/サブフォルダー:これを行うことができます:
*.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以降、Gitは例外を考慮します。公式リリースノートから:
- 後の「!/ abc/def」で同じ.gitignoreファイルにある以前の「/ abc」をオーバーライドして、「...を除く/ abcディレクトリ内のすべてを無視する」ことを簡単に表現できるようにします。
https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.7.0.txt