web-dev-qa-db-ja.com

gitは例外を無視します

Gitが*.dllファイルを無視するgitignoreファイルがあり、それが実際に私が望む動作です。ただし、例外が必要な場合(つまり、foo.dllをコミットできるようにする場合)、これをどのように達成できますか?

283
roundcrisis

つかいます:

*.dll    #Exclude all dlls
!foo.dll #Except for foo.dll

gitignore から:

オプションのプレフィックス!パターンを無効にします。以前のパターンで除外された一致するファイルは再び含まれます。否定されたパターンが一致する場合、これは優先順位の低いパターンのソースをオーバーライドします。

400
Skilldrick

Gitは次の場合にフォルダーを無視します。

/js

ただし、例外を追加することはできません:!/js/jqueryまたは!/js/jquery/または!/js/jquery/*

あなたが書く必要があります:

/js/* 

そして、あなたはこのようなサブフォルダを除外することができます

!/js/jquery
211
Matiss Jurgelis

単にgit add -f path/to/foo.dllすることができます。

.gitignoreは、通常の追跡およびgit add .などのファイルのみを無視します

52
Nils Riedemann

ディレクトリ内のすべてのサブディレクトリを除外するには、次の手順を実行します。

wp-content/*
!wp-content/plugins/
!wp-content/themes/

ソース: https://Gist.github.com/444295

16
Simon Paarlberg

除外ルールの前に!を追加するだけです。

gitignore man page によると:

パターンの形式は次のとおりです。

...

  • オプションのプレフィックス!パターンを無効にします。以前のパターンで除外された一致するファイルは再び含まれます。否定されたパターンが一致する場合、これは優先順位の低いパターンのソースをオーバーライドします。
14
Robert Munteanu

!foo.dll in .gitignore、または(毎回)git add -f foo.dll

5
Tobias Kienzler

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]/パターンが返されました。

4
DeanOC

解決策は、git ignoreルールと例外ルールの関係に依存します。

  1. 同じレベルのファイル/ファイル: @ Skilldrick solution を使用します。
  2. フォルダー/サブフォルダー: @ Matiss Jurgelis solution を使用します。
  3. さまざまなレベルのファイル/ファイルまたはファイル/サブフォルダー:これを行うことができます:

    *.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
    
2

Git 2.7.0以降、Gitは例外を考慮します。公式リリースノートから:

  • 後の「!/ abc/def」で同じ.gitignoreファイルにある以前の「/ abc」をオーバーライドして、「...を除く/ abcディレクトリ内のすべてを無視する」ことを簡単に表現できるようにします。

https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.7.0.txt

1
Erfan