ファイルを再帰的に.gitignoreする方法


105

.gitignoreファイルで次のパターンを回避しようとしています。

MyPrject/WebApp/Scripts/special/*.js
MyPrject/WebApp/Scripts/special/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*/*.js

私たちは試しました:

MyPrject/WebApp/Scripts/special/**.js
MyPrject/WebApp/Scripts/special/**/*.js

しかし、これはうまくいきませんでした。これはWindowsのgitです。物事を繰り返さずにこれを行うより簡潔な方法はありますか?


回答:


114

git 1.8.2以降、これは:

MyPrject/WebApp/Scripts/special/**/*.js

この答えに従って動作するはずです。また、Windows 7では、Sourcetree 1.6.12.0とそれがインストールするgitのバージョン(1.8.4-preview20130916)を使用して動作します。

ディレクトリの下のすべてのファイルとフォルダーを再帰的にgitignoreするには:

MyPrject/WebApp/Scripts/special/**

git 1.8より前はどうですか?
ashes999 2015

1
この回答が機能しない場合(Windows)、/先頭に文字を追加します。例:/MyProject/WebApp/Scripts/special/**/*.js
batressc 2016年

2
私の回答が文字通り別の回答へのリンクである場合、私の回答が賛成票を獲得し続けるのは恥ずかしいです。
サム

1
@puk:.gitignoreこの質問のは、リポジトリルート(の親ディレクトリ/Webapp)にありました。
lucid_dreamer 2018年

1
あなたの答えは良さそうですが、次の場合にjs以外のすべてのファイルを無視するためにgit 1.9.1を使用するWindows 10で私にとってうまくいきませんでした:(1行目)foo/bar/*/*(2行目)!foo/bar/**/*.js1レベルのサブディレクトリに対してのみ機能しましたが、再帰的には機能しませんでした。
LLL

19

次のgitignoreマニュアルページ:

[...] gitは、FNM_PATHNAMEフラグを指定したfnmatch(3)による使用に適したシェルグロブとしてパターンを扱います。パターン内のワイルドカードは、パス名内の/とは一致しません。

だから、これは明らかに指定する方法がないことを意味したディレクトリの一定量の間のように、二つの文字列の間には、specialjs

それにもかかわらず、.gitignoreディレクトリごとにファイルを持つことができるので、おそらくあなたの場合、次のコンテンツ

*.js

次の場所で

MyPrject/WebApp/Scripts/special/.gitignore

十分でしょうか?


私は以前使用していてMyPrject/WebApp/Scripts/special*.js、それMyPrject/WebApp/Scripts/specialfile.jsも同様に一致しましたMyPrject/WebApp/Scripts/special/a/b/c/file.js。ただし、何らかの理由で動作が変更され、現在の回避策はディレクトリを個別にリストすることです。私はGitHub for Windowsを使用しています。
orad

1
find MyPrject/WebApp/Scripts/special -type d -printf 'echo "*.js" >> %h/.gitignore\n git add %h/.gitignore\n' | sh
jthill、2013年

9

これは私にとってosx上で動作します。

lib64/**/__pycache__/
lib/**/__pycache__/
*.py[cod]
.ipynb_checkpoints/
**/.ipynb_checkpoints/
.DS_Store
**/.DS_Store

0

実行してみてくださいgit rm -r --cached MyPrject/WebApp/Scripts/special/ あなたの言及したディレクトリはgitによってキャッシュされている可能性があり、追跡されていないファイルに表示されます。キャッシュをクリアした後、に記載されていることを確認してください.gitignore

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.