私はこのようなディレクトリ構造を持っています:
.git/
.gitignore
main/
...
tools/
...
...
Mainとtools、そして他のディレクトリの中には、どのレベルでも、無視したい(そしてその下にあるすべてのものも無視したい) 'bin'ディレクトリがあります。私は.gitignoreでこれらのパターンのそれぞれを試しましたが、どれもうまくいきません:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
誰かが私を手伝ってくれる?最初のパターン(うまくいくはずだと思うパターン)は、これを実行すればうまく機能します。
/main/**/bin/**/*
しかし、最上位ディレクトリごとにエントリを作成する必要はなく、新しいディレクトリを追加するたびに.gitignoreを変更する必要もありません。
これはWindows上で最新のmsysgitを使用しています。
編集: もう1つ、名前にサブストリング 'bin'を含むファイルとディレクトリがあります。それらを無視したくはありません:)
バージョン1.8.2より前の**
では、.gitignore
に特別な意味はありませんでした。 1.8.2以降、gitは0個以上のサブディレクトリを意味する**
をサポートします( リリースノート を参照)。
ディレクトリツリーの現在のレベルより下の場所にあるbinというすべてのディレクトリを無視する方法は、次のパターンの.gitignore
ファイルを使用することです。
bin/
man
ページには、類似のパターンを使用してfoo
というディレクトリを無視する例があります。
編集: あなたがもう追跡したくないあなたのgitインデックスの中に既にbinフォルダがあれば、それらを明示的に削除する必要があります。 Gitは、既に追跡されているパスを新しい.gitignore
パターンに一致させるという理由だけで追跡を停止しません。フォルダの削除( rm )をインデックスからのみ( --cached )再帰的に( -r )に実行します。ルートbinフォルダのコマンドラインの例:
git rm -r --cached bin
あなたの夢の.gitignore
は、
bin/
最上位レベル.
私はそれがgit初心者に言及する価値があると思います:
ファイルを既にチェックインしていて、それを無視したい場合は、後でルールを追加してもGit はそのファイルを無視しません。そのような場合、あなたはあなたの端末で以下のコマンドを実行することによって、最初にファイルをアントラックしなければなりません:
git rm --cached
そのため、.gitignoreを編集した後にローカルリポジトリ内のいくつかのディレクトリ(すでに存在する)を無視して追加したい場合は、ルートディレクトリでこれを実行します。
git rm --cached -r .
git add .
それは基本的にあなたのローカルレポを「リフレッシュ」し、無視されたファイルをステージング解除します。
見る:
**
は以前は正しく動作しませんでしたが、 git 1.8.2(2013年3月8日) から、明示的に言及されサポートされているようです:
.gitignore
および.gitattributes
files 内のパターンは、0レベル以上のサブディレクトリ に一致するパターンとして、**/
を持つことができます。例えば。 "
foo/**/bar
"は、 "bar
"自体または "foo
"のサブディレクトリ内の "foo
"と一致します。
あなたの場合、それはこの行が今サポートされるかもしれないことを意味します:
/main/**/bin/
[Bb]in/
大文字と小文字の両方に一致
ここでは触れていませんが、これは大文字と小文字が区別されるようです。/Binに変更すると、ファイルは期待どおりに無視されました。
[Bb]in
は問題を解決しますが、... ここであなたが無視すべきもののより広範なリスト(GitExtensionによるサンプルリスト):
#ignore thumbnails created by windows
Thumbs.db
#Ignore files build by Visual Studio
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.bak
*.cache
*.ilk
*.log
[Bb]in
[Dd]ebug*/
*.sbr
obj/
[Rr]elease*/
_ReSharper*/
Visual Studio(.NET)ソリューション用の優れたグローバル.gitignore
ファイルを探している場合-これを使用することをお勧めします。 https://github.com/github/gitignore/blob /master/VisualStudio.gitignore
知る限り、.NETプロジェクト向けの最も包括的な.gitignore
があります。
手順1:ファイル.gitignoreに次の内容を追加します。
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
# Visual Studio 2015 cache/options directory
.vs/
ステップ2:必ず有効にする
それでも問題が解決しない場合は、 .gitignore の設定では、元々 追跡されていない のファイルしか無視できないためです。いくつかのファイルがすでにバージョン管理システムに含まれている場合は、 .gitignore を変更することは無効です。この問題を完全に解決するには、 Git Bash を開く必要があります。 パッケージマネージャコンソール (以下のスクリーンショットを参照)リポジトリのルートフォルダで以下のコマンドを実行します。
$ git rm -r --cached .
$ git add .
$ git commit -m 'Update .gitignore'
お知らせとして。
.gitignore
が機能しないと考えた場合(foo/*
フォルダを追加したが、git status
にはそのフォルダの内容がまだ変更されている、またはこのようなものとして表示されている場合)、このコマンドを使用できます。
git checkout -- foo/*
2.13.3以降では、.gitignoreファイルにbinだけを書き込んでもbinとそのすべてのサブディレクトリおよびファイルは無視される
ビン
文字通り答えのどれも実際に私のために働かなかった。私のために働いていた唯一のものは(Linux上)でした:
**/bin
(yes without the / in the end)
git version 2.18.0
.gitignore
内のパターンがスラッシュ/
で終わっている場合は、ディレクトリとの一致のみが見つかります。
つまり、bin/
はディレクトリbin
とその下のパスに一致しますが、通常のファイルまたはシンボリックリンクbin
には一致しません。
bin
のように、パターン にスラッシュ が含まれていない場合、Gitはそれをシェルglobパターン(greedy)として扱います。だから、単純な/bin
を使うのが最善です。
bin
はこの特定の問題に対する最良の解決策ではないでしょう。
.gitignoreファイルに**/bin /を追加するとうまくいきました(注:binフォルダはインデックスに追加されませんでした)。