私はgitignoreファイルを持っているので、gitはファイルを無視し*.dll
ます。これが実際に私が望む動作です。ただし、例外が必要な場合(つまり、コミットできるようにする場合foo.dll
)、どうすればこれを達成できますか?
私はgitignoreファイルを持っているので、gitはファイルを無視し*.dll
ます。これが実際に私が望む動作です。ただし、例外が必要な場合(つまり、コミットできるようにする場合foo.dll
)、どうすればこれを達成できますか?
回答:
使用する:
*.dll #Exclude all dlls
!foo.dll #Except for foo.dll
gitignoreから:
オプションの接頭辞!これはパターンを無効にします。以前のパターンによって除外された一致するファイルは、再び含まれます。否定されたパターンが一致する場合、これは優先順位の低いパターンソースをオーバーライドします。
*.dll
中にあり、私のプロジェクトのgitignoreは!Libs/*.dll
それを持っていますが、それは機能していないようです。
!Libs/**/*.dll
。
!**/Libs/*.dll
、フォルダー構造によって異なります。
!foo.dll
と、コマンドが無効になります。別の行にコメントを追加すると機能します。
次のように記述した場合、Gitはフォルダーを無視します。
/js
ただし、次の場合は例外を追加できません:
!/js/jquery
または!/js/jquery/
または!/js/jquery/*
あなたは書く必要があります:
/js/*
そうして初めて、このようなサブフォルダを除外できます
!/js/jquery
!/js/jquery/xyzlib
無視されません...
/js/*
、!/js/jquery
、/js/jquery/*
、!/js/jquery/xyzlib
?それを行うにはかなりおもしろい方法のように感じます...
簡単にできますgit add -f path/to/foo.dll
。
.gitignore
通常の追跡用のファイルのみを無視します git add .
-f
あなたの理由で最初に無視する可能性があるため、gitはこのファイルをリポジトリに強制的に追加するようにgitに指示します.gitignore
ディレクトリ内のすべてのサブディレクトリを除外するには、次の操作を行います。
wp-content/*
!wp-content/plugins/
!wp-content/themes/
!
除外ルールの前に追加するだけです。
パターンの形式は次のとおりです。
...
- オプションの接頭辞!これはパターンを無効にします。以前のパターンによって除外された一致するファイルは、再び含まれます。否定されたパターンが一致する場合、これは優先順位の低いパターンソースをオーバーライドします。
!foo.dll
.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無視ルールと例外ルールの関係によって異なります。
異なるレベルのファイル/ファイルまたはファイル/サブフォルダー:これを行うことができます:
*.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は例外を考慮に入れます。公式リリースノートから:
- 同じ.gitignoreファイルにある以前の "/ abc"を後の "!/ abc / def"で上書きして、 "/ abcディレクトリ内のすべてを無視する..."を簡単に表現できるようにします。
https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.7.0.txt