web-dev-qa-db-ja.com

未追跡ファイルのリストに.gitignoreが表示されないようにするにはどうすればよいですか

私はちょうど私の新しいプロジェクトのルートでgit initをしました。

それから私は.gitignoreファイルを作成しました。

さて、git statusと入力すると、 .gitignore fileが追跡されていないファイルのリストに表示されます。何故ですか?

947

.gitignoreファイルはリポジトリにあるはずなので、git statusが示すように、実際に追加してコミットする必要があります。それはリポジトリツリーの一部である必要があります、それでそれへの変更はマージされることができるように。

それで、それをあなたのリポジトリに追加してください、それはgitignoredされるべきではありません。

本当にコミットしたくない場合は、本当に.gitignoreファイルに.gitignoreを追加することができます。ただし、その場合は、無視を.git/info/excludeに追加する方がよいでしょう。これは、.gitignoreのように機能しますが、.gitフォルダにあるため「git status」で表示されない特別なチェックアウトローカルファイルです。

https://help.github.com/articles/ignoring-files も参照してください。

912
August Lilleaas

無視したファイルのリストをGitツリーの外に保存したい場合は、 .git/info/exclude ファイルを使用できます。それはあなたのレポのチェックアウトにのみ適用されます。

273
Paweł Hajdan

あなたは実際にあなたの ".gitignore"ファイルに ".gitignore"という行を入れることができます。これにより、 "。gitignore"ファイルはgitに無視されます。実際にはこれは良い考えではないと思います。無視ファイルはバージョン管理され追跡されるべきだと思います。完全を期すためにこれを出しているだけです。

75

all あなたのリポジトリに自動的に適用されるグローバルユーザgit .gitignoreファイルを持つこともできます。これはIDEとエディタファイル(例えばVimの場合はswp*~ファイル)に役立ちます。 OSに合わせてディレクトリの場所を変更する

  1. ~/.gitconfigファイルに追加してください

    [core]
    excludesfile = /home/username/.gitignore
    
  2. 無視するファイルパターンで~/.gitignoreファイルを作成します

  3. ドットファイルを別のリポジトリに保存して、バックアップを作成します(オプション)。

レポジトリをコピー、初期化、複製するたびに、あなたのグローバルgitignoreファイルも使用されます。

51
Alec the Geek

誰かがあなたのリポジトリに.gitignoreを既に追加しているけれども、あなたはそれにいくつかの変更を加えたい、そしてそれらの変更を無視させたいなら、以下をしてください:

git update-index --assume-unchanged .gitignore

ソース

42
Leif Gruenwoldt

.gitignoreファイルを追加してコミットすると、それは「追跡されていないファイル」リストに表示されなくなります。

git add .gitignore
git commit -m "add .gitignore file"
git status
37
Greg Hewgill

他の誰かが私たちと同じ痛みを抱えているだけの場合。既にコミットされたファイルを除外したいと思いました。

この投稿はもっと役に立ちました: .git/info/excludeで遅すぎます

具体的には、ファイルを無視するために必要なものは、実際にはgit removeコマンドを使用することです。 git rm http://www.kernel.org/pub/software/scm/git/docs/git-rmを参照してください。 .html

あなたは行くことによってそれをテストします

git rm --dry-run *.log
(あなたがすべてのログファイルを除外したいと言っている場合)

実行した場合、is _が除外されたものが出力されます。

それから

あなたは行くことによってそれを実行します

git rm *.log
(またはあなたが望むどんなファイル名パス/表現)

次に、*.logファイルに.gitignore行を追加します。

20
Evolve

もちろん、.gitignoreファイルはステータスに表示されています。なぜなら、それは追跡されず、gitがそれを食べるのがおいしい新しいファイルだと見なすからです。

ただし、.gitignoreは追跡されていないファイルなので、.gitignoreに入れるとgitに無視される可能性があります。

だから、答えは簡単です:単に行を追加します。

.gitignore # Ignore the hand that feeds!

あなたの.gitignoreファイルに!

そして、8月の回答に反して、.gitignoreファイルshouldがあなたのリポジトリにあるということではないと私は言うべきです。それはそれがcan beであることが起こるだけで、それはしばしば便利です。そしてこれが.gitignoreが.git/info/excludeの代わりとして作成された理由であることはおそらく本当です。とにかく、どのようにあなたがあなたの.gitignoreファイルを使うかはあなた次第です。

参考のために、kernel.orgの gitignore(5)マンページ をチェックしてください。

15
chase

その考えは、あなたのプロジェクトに特有のファイルを.gitignoreファイルに入れて、(既に述べたように)それをリポジトリに追加することです。例えば.pyc.oファイル、テストスイートが作成したログ、フィクスチャなど.

あなた自身の設定で作成されているが必ずしもすべてのユーザに表示されるわけではないファイル(あなたがvimを使っている場合は.swpファイル、隠れたecpliseディレクトリなど)では、(既に述べたように).git/info/excludeを使うべきです。

15
bayer

まず第一に、他の多くの人がすでに言っているように、あなたの.gitignoreはGit によって追跡されるべきです(したがって無視されるべきではありません)。その理由を説明しましょう。

(TL; DR:.gitignoreファイルをコミットし、IDEまたはオペレーティングシステムによって作成されたファイルを無視するために global .gitignore を使用します)

Gitは、ご存知のとおり、分散バージョン管理システムです。つまり、開発が異なるブランチに分岐している場合でも、異なるバージョン間で切り替えることができ、複数の開発者が同じプロジェクトで作業することもできます。

スナップショットを切り替えるときに.gitignoreを追跡することにも利点がありますが、コミットする最も重要な理由は、同じプロジェクトに取り組んでいる他の開発者とファイルを共有したいということです。 Gitにファイルをコミットすることで、他の貢献者はリポジトリをクローンするときに自動的に.gitignoreファイルを取得するので、コミットしてはいけないファイル(ログファイル、キャッシュディレクトリ、データベースなど)を誤ってコミットすることを心配する必要はありません。資格情報など)そして、ある時点でプロジェクトの.gitignoreが更新された場合、手動でファイルを編集する必要はなく、単にそれらの変更を取り込むことができます。

もちろん、無視したいファイルやフォルダーがいくつかありますが、それはユーザー固有のものであり、他の開発者には適用されません。しかし、それらはプロジェクトの.gitignoreにあってはいけません。ファイルとフォルダを無視できる場所は他に2つあります。

  • オペレーティングシステムまたはIDEによって作成されたファイルとフォルダは、 global .gitignore に配置する必要があります。利点は、この.gitignoreがあなたのコンピュータ上のすべてのリポジトリに適用されるので、すべてのリポジトリに対してこれを繰り返す必要がないことです。他の開発者とは異なるオペレーティングシステムやIDEを使用している可能性があるため、他の開発者とは共有されません。
  • プロジェクトの.gitignoreにもグローバル.gitignoreにも属さないファイルは、 明示的リポジトリ除外your_project_directory/.git/info/exclude を使用して無視できます。このファイルは他の開発者と共有されることはなく、その単一のリポジトリに固有のものです。
14
Nic Wortel

次の「問題」に注意してください。ディレクトリを追加したいが、それらのディレクトリ内にファイルを追加したくないことがあります。簡単な解決策は、次の内容で.gitignoreを作成することです。

*

ディレクトリが追加されていないことがわかるまで(リポジトリに期待どおり。).gitignoreも無視され、それによってディレクトリが空になるため、この作業はうまくいきます。したがって、次のようにしてください。 :

*
!.gitignore
10
Maze

これはあなたの現在のディレクトリがリポジトリからのすべてのファイルを無視するためにGitを取得するためにだけ働くようです。

このファイルを更新する

.git/info/exclude 

ワイルドカードまたはファイル名で

*pyc
*swp
*~
7
Paul Tyrrell

私の場合は、既存のファイルを除外したいと思います。 .gitignore を変更するだけでは動作しません。私はこれらのステップに従った:

git rm --cached dirToFile/file.php
vim .gitignore
git commit -a

このようにして、除外したいファイルをキャッシュから消去し、そのファイルを .gitignore に追加した後に消去しました。

4

.gitignoreを既にチェックインしていて、それに対する変更を無視したい場合は、 この答え :をチェックしてください。

このコマンドを使ってみてください。

git update-index --assume-unchanged FILENAME_TO_IGNORE

それを元に戻すには(変更をコミットしたい場合は)、次のようにします。

git update-index --no-assume-unchanged

_ update _

現在のディレクトリの下に '変更なしと仮定する' ファイルを一覧表示する方法は次のとおりです。

git ls-files -v | grep -E "^[a-z]"

-vオプションは '仮定変更'ファイルに小文字を使用します。

3
Aaron

Gitリポジトリのベースディレクトリに移動して、次のコマンドを実行します。

echo '\\.*' >> .gitignore

Macを使用している場合は、その厄介な.DS_Storeを含め、すべてのドットファイルは無視されます。

3
weffen

.gitignoreを無視することが非常に役に立つ状況があると思います。たとえば、同じコードベースで作業しているチームが複数ある場合や大規模チームが1人いる場合などです。その場合は、特定の規約が必要です。そのうちの1つは、gitリポジトリで無視される内容に関するものです。それは通常IDEやOSによって生成されたファイルやディレクトリ、生成されたログなどを無視することに関するものです。

しかし、.gitignoreファイルに従来とは異なる変更を導入する傾向がある力があります。 .gitignoreファイルは、無責任な人によって、誤って、使用されるツールによって、またはその他の場合にはさらに変更される可能性があります。

これに対抗するには、次のようにします。

  1. 最初の.gitignoreはチームでの慣例を反映するべきです、
  2. それがプッシュされた後、.gitignoreエントリを追加してその変更を再度プッシュすることで.gitignoreを保護する必要があります。このように、.gitignoreファイルは " sealed "です。

" sealed " .gitignoreファイルは、そのチェンジャーを他のチームのメンバーに伝播することなく、ローカルにだけ変更できます。しかし、「封印を解除する」ことが可能であるよりも変更がチーム全体で広く合意されている場合は、変更してから再度「封印」することまでも可能です。それは誤ってすることはできません、意図的にのみです。

残念ながら、あなたは愚かさから100%保護されることはできませんが、このようにしてあなたは愚かなことが起こるのを防ぐためにあなたができる限りのことをしました。

非常に優秀な専門家のいる比較的小規模なチームであれば、これは重要ではありませんが、心配する必要があるものが1つ少なくても嬉しいでしょう。

.git/info/excludeを使用するのは、インフラストラクチャ設定に関して何もできないときには、クールにしてください。間違いをしないように自分自身で**をカバーするだけです。

何が正しいのか、何が間違っているのかという観点から、私は.gitignoreファイルの中に.gitignoreエントリを持つことに投票しています。

1
Sasa

.gitignore other ファイルを無視することについてです。 gitはファイルについてなので、これはファイルを無視することについてです。しかし、gitはファイルを処理するので、このファイルは他のファイル名をリストするためのメカニズムとして存在する必要があります。

それが.the_list_of_ignored_filesと呼ばれていたら、もう少し明白かもしれません。

アナロジーとは、やりたくないことをやることのリストです。あなたがそれらをどこかにリストアップしない限り、あなたがそれらについて知ることはないでしょう。

1
Michael Durrant

Eclipseによって作成されたIDE固有のフォルダがおそらくNetBeansや他のIDEと同じではないという理由で、エンドユーザーがGitに ".gitignore"ファイルを無視させることを望んでいる可能性は十分にあります。そのため、ソースコードIDEを拮抗させるために、個々の開発者が異なるIDEを使用している可能性があるため、チーム全体と共有されないカスタムgitの無視は人生を楽にします。

1
John Brown

私は、厄介な.DS_Storeファイルを無視するように設定するのに最適な場所は.git/info/excludeファイルにあることを知りました。

IntelliJは、あなたがその中にgitリポジトリを設定するときにこれを自動的に行うようです。

0