gitプロジェクトの「bin」ディレクトリを無視する


1236

私はこのようなディレクトリ構造を持っています:

.git/
.gitignore
main/
  ...
tools/
  ...
...

メインとツール、およびその他のディレクトリ内の任意のレベルで、無視したい(そしてその下にあるものもすべて無視したい)binディレクトリが存在する可能性があります。私は.gitignoreでこれらの各パターンを試しましたが、どれも機能しません:

/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too

誰かが私を助けてくれますか?最初のパターン(私が機能しているはずだと思うもの)は、これを実行すると問題なく機能します。

/main/**/bin/**/*

しかし、すべての最上位ディレクトリにエントリを設定したくありません。また、新しいディレクトリを追加するたびに.gitignoreを変更する必要はありません。

これは、最新のmsysgitを使用するWindows上にあります。

編集:もう1つ、名前に部分文字列「bin」が含まれているファイルとディレクトリがあり、それらを無視したくない:)


14
おそらく誰かが役に立つでしょう:リポジトリが少なく、それぞれに同じ.gitignoreファイルがある場合は、それを「共通」の場所に置いて起動します> git config --global core.excludesfile〜/ .gitignore_global最後のパラメーターはパスです共通の場所に。PS私はgitを初めて使用するので、それが「ベストプラクティス」の推奨事項であるかどうかはわかりません。ですから、そうしたくない場合はお知らせください。ありがとうございました。
ブッダ

**参照:構文は(gitの1.8.2、2013年3月)正式に文書化され、今思わ以下の私の答え
VonC

2
実際のマニュアルページの最新バージョンを読みたい場合は、gitignore(5)マニュアルページを参照してください。

あなたが情報の1ライン分のための読書エッセイのに疲れている場合は優しいオプションatlassian.com/git/tutorials/saving-changes/...
suazithustra

回答:


1834

バージョン1.8.2より前**は、では特別な意味はありませんでした.gitignore。1.8.2以降、gitは**0個以上のサブディレクトリを意味するようにサポートしています(リリースノートを参照)。

ディレクトリツリーの現在のレベルより下にあるbinと呼ばれるすべてのディレクトリを無視する方法は.gitignore、次のパターンのファイルを使用することです。

bin/

このmanページにはfoo、類似パターンを使用して呼び出されたディレクトリを無視する例があります。

編集: もはや追跡したくないbinフォルダーがgitインデックスに既にある場合は、それらを明示的に削除する必要があります。Gitは、すでに追跡されているパスが新しい.gitignoreパターンに一致したという理由だけで追跡を停止しません。インデックスのみからフォルダー削除(rm)を実行--cached)再帰的に実行-r)します。ルートbinフォルダーのコマンドラインの例:

git rm -r --cached bin

72
gitの1.8.2以降では、Gitは受け入れる**には.gitignore:ファイル(ソース1.8.2のchangelog
カルロスCampderrós

15
であるbinのと同じbin/
Nisba

29
@Nisba、それらは異なり、binbinという名前のファイルを無視しますが、bin bin/という名前のディレクトリの場合
Rani Kheir 2017年

8
私はこれ
dba

1
windows10では、あなたがgitignore.txtを作成し、このファイルを作成するためのプロンプトのコマンドでREN gitignore.txt .gitignoreを実行する必要があり、.gitignoreファイルを作成することはできません
みすぼらしい

463

.gitignoreあなたの夢のはあると思われます。

bin/

トップレベルで。


無視されたファイルの例をチェックアウトすることを忘れないでください、ありがとうございました:git checkout bin *
Chris Sim

1
gitignore_globalにそれを置く
μολὼν.λαβέ

@GAlexander、なぜbin /ディレクトリをグローバルに無視したいのですか?彼らはしばしばバージョン管理されたコンテンツを持っています。また、グローバル無視はリポジトリの他のユーザーには影響しません。
マイケルクレリン-ハッカー、

234

git初心者のために言及する価値があると思います:

既にファイルをチェックインしていて、それを無視したい場合、後でルールを追加しても、Gitはファイルを無視しません。そのような場合は、ターミナルで次のコマンドを実行して、最初にファイルの追跡を解除する必要があります。

git rm --cached

したがって、.gitignoreを編集した後にローカルリポジトリ(すでに存在する)の一部のディレクトリを無視して追加したい場合は、ルートディレクトリでこれを実行します。

git rm --cached -r .
git add .

基本的に、ローカルリポジトリを「更新」し、無視されたファイルのステージを解除します。

見る:

http://git-scm.com/docs/git-rm

https://help.github.com/articles/ignoring-files/


私が通常git add -Aコミットを実行している場合、代わりにこれを使用できますか?最初の行でもドットを-Aに置き換えることができますか?
ajax333221

69

**適切に前に働いていないが、以来、決してgitの1.8.2(3月8日2013) 、明示的に言及してサポートしているようです。

.gitignoreおよび.gitattributesファイル内のパターンは、サブディレクトリの0以上のレベルに一致するパターンとして持つことができ**/ます。

たとえば、「foo/**/barbarは「foo」自体または「foo」のサブディレクトリ内の「」に一致します。

あなたの場合、これはこの行がサポートされている可能性があることを意味します:

/main/**/bin/

46
[Bb]in/

大文字と小文字の両方に一致します


2
[B]in/唯一の大文字になる
Gank 2014

Binフォルダのみを無視binしてgitにコミットさせる方法は? [B]in/との両方をコミットBinbinます。
ガンク2014

4
これでうまくいくはずです、@ Gank: Bin/ !bin/
Marco G

34

ここでは言及していませんが、大文字と小文字が区別されるようです。/ Binに変更すると、ファイルは期待どおりに無視されました。


3
これは、明確にについてであった元の質問への回答ではbinありませんBin
CBベイリー

49
答えではありませんが、同じ問題を検索している他の人(私自身、今のところ)の完全性を高めます。
Jay

25

[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*/

3
注:このようなものは、(。通常は自分のホームディレクトリに)あなたGLOBAL gitignoreにする必要があり、プロジェクトのgitignoreのみがプロジェクトに物事の特定を無視すべきである(。Cアプリのためのすなわち.oファイル)
BraveNewCurrency

18

.gitignoreVisual Studio(.NET)ソリューションの優れたグローバルファイルを探している場合-これを使用することをお勧めします:https : //github.com/github/gitignore/blob/master/VisualStudio.gitignore

AFAIKは、.gitignore.NETプロジェクトにとって最も包括的なものです。


5
これは実際には質問の答えにはなりませんが、まさに私が探していたものです。
デイブ

18

手順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'

PMコンソール その後、問題は完全に解決されます。


8

文字通り、私にとって実際に有効な答えはありませんでした。私のために働いた唯一のものは(Linux上で)でした:

**/bin
(yes without the / in the end)

git version 2.18.0 

binサブディレクトリで指定されたすべてのフォルダも無視しましたか?
vineeshvs

5

お知らせとして;

あなたが考える場合.gitignoreのように仕事(そう追加しないfoo/*フォルダはそれではなく、git status変更またはこのようなものとして、まだそのフォルダの内容(複数可)を示す)、あなたは、このコマンドを使用することができます。

git checkout -- foo/*


3

2.13.3以降の場合、.gitignoreファイルにbinのみを書き込むと、binとそのすべてのサブディレクトリおよびファイルが無視されます。

置き場


2

** / bin /を.gitignoreファイルに追加するとうまくいきました(注:binフォルダーはインデックスに追加されませんでした)。


1

内側のパターンが.gitignoreスラッシュで終わっている場合/で、ディレクトリとの一致のみが検索されます。

つまり、bin/binその下のディレクトリとパスに一致しますが、通常のファイルやシンボリックリンクには一致しませんbin


Gitのように、パターンにスラッシュが含まれていない場合はbin、シェルグロブパターン(貪欲)として扱います。だからシンプルなのが一番いいでしょう/bin

bin この特定の問題に対する最善の解決策ではありません。


「で始まる」という意味/ですか?
vineeshvs

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