私はちょうど私の新しいプロジェクトのルートでgit init
をしました。
それから私は.gitignore
ファイルを作成しました。
さて、git status
と入力すると、 .gitignore fileが追跡されていないファイルのリストに表示されます。何故ですか?
.gitignore
ファイルはリポジトリにあるはずなので、git status
が示すように、実際に追加してコミットする必要があります。それはリポジトリツリーの一部である必要があります、それでそれへの変更はマージされることができるように。
それで、それをあなたのリポジトリに追加してください、それはgitignoredされるべきではありません。
本当にコミットしたくない場合は、本当に.gitignore
ファイルに.gitignore
を追加することができます。ただし、その場合は、無視を.git/info/exclude
に追加する方がよいでしょう。これは、.gitignoreのように機能しますが、.git
フォルダにあるため「git status」で表示されない特別なチェックアウトローカルファイルです。
無視したファイルのリストをGitツリーの外に保存したい場合は、 .git/info/exclude ファイルを使用できます。それはあなたのレポのチェックアウトにのみ適用されます。
あなたは実際にあなたの ".gitignore"ファイルに ".gitignore"という行を入れることができます。これにより、 "。gitignore"ファイルはgitに無視されます。実際にはこれは良い考えではないと思います。無視ファイルはバージョン管理され追跡されるべきだと思います。完全を期すためにこれを出しているだけです。
all あなたのリポジトリに自動的に適用されるグローバルユーザgit .gitignore
ファイルを持つこともできます。これはIDEとエディタファイル(例えばVimの場合はswp
と*~
ファイル)に役立ちます。 OSに合わせてディレクトリの場所を変更する
~/.gitconfig
ファイルに追加してください
[core]
excludesfile = /home/username/.gitignore
無視するファイルパターンで~/.gitignore
ファイルを作成します
ドットファイルを別のリポジトリに保存して、バックアップを作成します(オプション)。
レポジトリをコピー、初期化、複製するたびに、あなたのグローバルgitignoreファイルも使用されます。
誰かがあなたのリポジトリに.gitignore
を既に追加しているけれども、あなたはそれにいくつかの変更を加えたい、そしてそれらの変更を無視させたいなら、以下をしてください:
git update-index --assume-unchanged .gitignore
ソース 。
.gitignore
ファイルを追加してコミットすると、それは「追跡されていないファイル」リストに表示されなくなります。
git add .gitignore
git commit -m "add .gitignore file"
git status
他の誰かが私たちと同じ痛みを抱えているだけの場合。既にコミットされたファイルを除外したいと思いました。
この投稿はもっと役に立ちました: .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
行を追加します。
もちろん、.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)マンページ をチェックしてください。
その考えは、あなたのプロジェクトに特有のファイルを.gitignore
ファイルに入れて、(既に述べたように)それをリポジトリに追加することです。例えば.pyc
や.o
ファイル、テストスイートが作成したログ、フィクスチャなど.
あなた自身の設定で作成されているが必ずしもすべてのユーザに表示されるわけではないファイル(あなたがvimを使っている場合は.swp
ファイル、隠れたecpliseディレクトリなど)では、(既に述べたように).git/info/exclude
を使うべきです。
まず第一に、他の多くの人がすでに言っているように、あなたの.gitignore
はGit によって追跡されるべきです(したがって無視されるべきではありません)。その理由を説明しましょう。
(TL; DR:.gitignore
ファイルをコミットし、IDEまたはオペレーティングシステムによって作成されたファイルを無視するために global .gitignore
を使用します)
Gitは、ご存知のとおり、分散バージョン管理システムです。つまり、開発が異なるブランチに分岐している場合でも、異なるバージョン間で切り替えることができ、複数の開発者が同じプロジェクトで作業することもできます。
スナップショットを切り替えるときに.gitignore
を追跡することにも利点がありますが、コミットする最も重要な理由は、同じプロジェクトに取り組んでいる他の開発者とファイルを共有したいということです。 Gitにファイルをコミットすることで、他の貢献者はリポジトリをクローンするときに自動的に.gitignore
ファイルを取得するので、コミットしてはいけないファイル(ログファイル、キャッシュディレクトリ、データベースなど)を誤ってコミットすることを心配する必要はありません。資格情報など)そして、ある時点でプロジェクトの.gitignore
が更新された場合、手動でファイルを編集する必要はなく、単にそれらの変更を取り込むことができます。
もちろん、無視したいファイルやフォルダーがいくつかありますが、それはユーザー固有のものであり、他の開発者には適用されません。しかし、それらはプロジェクトの.gitignore
にあってはいけません。ファイルとフォルダを無視できる場所は他に2つあります。
.gitignore
に配置する必要があります。利点は、この.gitignore
があなたのコンピュータ上のすべてのリポジトリに適用されるので、すべてのリポジトリに対してこれを繰り返す必要がないことです。他の開発者とは異なるオペレーティングシステムやIDEを使用している可能性があるため、他の開発者とは共有されません。.gitignore
にもグローバル.gitignore
にも属さないファイルは、 明示的リポジトリ除外your_project_directory/.git/info/exclude
を使用して無視できます。このファイルは他の開発者と共有されることはなく、その単一のリポジトリに固有のものです。次の「問題」に注意してください。ディレクトリを追加したいが、それらのディレクトリ内にファイルを追加したくないことがあります。簡単な解決策は、次の内容で.gitignoreを作成することです。
*
ディレクトリが追加されていないことがわかるまで(リポジトリに期待どおり。).gitignoreも無視され、それによってディレクトリが空になるため、この作業はうまくいきます。したがって、次のようにしてください。 :
*
!.gitignore
これはあなたの現在のディレクトリがリポジトリからのすべてのファイルを無視するためにGit
を取得するためにだけ働くようです。
このファイルを更新する
.git/info/exclude
ワイルドカードまたはファイル名で
*pyc *swp *~
私の場合は、既存のファイルを除外したいと思います。 .gitignore を変更するだけでは動作しません。私はこれらのステップに従った:
git rm --cached dirToFile/file.php
vim .gitignore
git commit -a
このようにして、除外したいファイルをキャッシュから消去し、そのファイルを .gitignore に追加した後に消去しました。
.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
オプションは '仮定変更'ファイルに小文字を使用します。
Gitリポジトリのベースディレクトリに移動して、次のコマンドを実行します。
echo '\\.*' >> .gitignore
Macを使用している場合は、その厄介な.DS_Storeを含め、すべてのドットファイルは無視されます。
.gitignoreを無視することが非常に役に立つ状況があると思います。たとえば、同じコードベースで作業しているチームが複数ある場合や大規模チームが1人いる場合などです。その場合は、特定の規約が必要です。そのうちの1つは、gitリポジトリで無視される内容に関するものです。それは通常IDEやOSによって生成されたファイルやディレクトリ、生成されたログなどを無視することに関するものです。
しかし、.gitignore
ファイルに従来とは異なる変更を導入する傾向がある力があります。 .gitignore
ファイルは、無責任な人によって、誤って、使用されるツールによって、またはその他の場合にはさらに変更される可能性があります。
これに対抗するには、次のようにします。
.gitignore
ファイルは " sealed "です。" sealed " .gitignore
ファイルは、そのチェンジャーを他のチームのメンバーに伝播することなく、ローカルにだけ変更できます。しかし、「封印を解除する」ことが可能であるよりも変更がチーム全体で広く合意されている場合は、変更してから再度「封印」することまでも可能です。それは誤ってすることはできません、意図的にのみです。
残念ながら、あなたは愚かさから100%保護されることはできませんが、このようにしてあなたは愚かなことが起こるのを防ぐためにあなたができる限りのことをしました。
非常に優秀な専門家のいる比較的小規模なチームであれば、これは重要ではありませんが、心配する必要があるものが1つ少なくても嬉しいでしょう。
.git/info/exclude
を使用するのは、インフラストラクチャ設定に関して何もできないときには、クールにしてください。間違いをしないように自分自身で**をカバーするだけです。
何が正しいのか、何が間違っているのかという観点から、私は.gitignore
ファイルの中に.gitignoreエントリを持つことに投票しています。
.gitignore
は other ファイルを無視することについてです。 gitはファイルについてなので、これはファイルを無視することについてです。しかし、gitはファイルを処理するので、このファイルは他のファイル名をリストするためのメカニズムとして存在する必要があります。
それが.the_list_of_ignored_files
と呼ばれていたら、もう少し明白かもしれません。
アナロジーとは、やりたくないことをやることのリストです。あなたがそれらをどこかにリストアップしない限り、あなたがそれらについて知ることはないでしょう。
Eclipseによって作成されたIDE固有のフォルダがおそらくNetBeansや他のIDEと同じではないという理由で、エンドユーザーがGitに ".gitignore"ファイルを無視させることを望んでいる可能性は十分にあります。そのため、ソースコードIDEを拮抗させるために、個々の開発者が異なるIDEを使用している可能性があるため、チーム全体と共有されないカスタムgitの無視は人生を楽にします。
私は、厄介な.DS_Store
ファイルを無視するように設定するのに最適な場所は.git/info/exclude
ファイルにあることを知りました。
IntelliJは、あなたがその中にgitリポジトリを設定するときにこれを自動的に行うようです。