2016-11-21 6 views
3

Windows 7Git v2.8.3を使用しています。Git - 1つのディレクトリ内のすべてのファイルを再帰的に無視する方法ですが、特定の拡張子を持つファイルをいくつか無視します。

Gitリポジトリを含むthis directory structureがあります。

testing_gitignore 
│ .gitignore 
│ file_1.txt 
│ file_2.txt 
│ 
├───dir_1 
│  file_11.txt 
│  file_12.txt 
│  file_13.txt 
│ 
└───dir_2 
    │ file_21.txt 
    │ file_22.txt 
    │ file_23.xlsx 
    │ file_24.txt 
    │ 
    └───dir_21 
      file_211.txt 
      file_212.xlsx 
      file_213.txt 

私は再帰的にdir_2内のすべてのファイルを無視するが、維持する(ためのコミット)拡張子を持つファイルにするために.gitignoreファイルを設定したい:.xlsx(再帰的に)。

/dir_2/* 
/dir_2/**/* 
!/dir_2/*.xlsx 
!/dir_2/**/*.xlsx 

しかし、私はファイルとしてcommitに(あなたもhereを見ることができます)、以下のリストを取得するので、私は何の成功を得るん:.gitignoreインサイド

は、私は次のように使用

.gitignore 
file_1.txt 
file_2.txt 
dir_1\file_11.txt 
dir_1\file_12.txt 
dir_1\file_13.txt 
dir_2\file_23.xlsx 

が、ファイルをコミットするファイルとして含める必要があります:

dir_2/dir_21/file_212.xlsx 

これを達成するには.gitignoreの設定を教えてください。 (ここに投稿する前にあなたは、私がリンクからダウンロードする前に、付属のディレクトリ構造と自分でそれを試みることができる?)

答えて

4

フォルダのファイルを無視するが、再含めるようにしてください:

/dir_2/**/* 
!/dir_2/**/ 

/**/*注最初のルールのすべてのファイルとフォルダを再帰的に無視し、2番目のルールにフォルダ!/**/を再度組み込みます)。 (フォルダを

It is not possible to re-include a file if a parent directory of that file is excluded.ので無視してファイル:(そのフォルダは無視されていないので)

次に、あなたは

!/dir_2/**/*.xlsx 

主なルールはおよそ.gitignoreままファイルを再含めることができます'/**/*')は、親フォルダが再埋め込みされない限り、再インクルードファイルを使用できないことを意味します(!/**/:末尾のスラッシュは「フォルダ」を意味します)。
.gitignore:あなたがその効果をテストするために.gitignoreをコミットする必要はありません

/dir_2/**/* 
!/dir_2/**/ 
!/dir_2/**/*.xlsx 

注:これを変更し、git statusを行います限り追跡されていないこれらのファイルは、(git rm -r --cached dir_2最初に行う)としてこれらのルールの効果は即座に発生します。代わりにその.gitignore

は、git add .、およびgit statusの操作を行います。それだけで追加されたものとしてdir_2/*.xlsxを表示する必要があります。

[下線に注意してください]

+0

これについて詳しく説明できますか。私はあなたの最初の3行を試みたが、うまくいきませんでした。ありがとう –

+0

@DavidSmith私は答えを編集しました。 – VonC

+0

私はあなたの最後の3行を試みましたが、まだ動作しません。私はまだコミットをしていない(初期コミットさえしていない)ので、私は 'git rm'をする必要はないと思う。 –

関連する問題