いつ.gitignoreの代わりに.git / info / excludeを使用してファイルを除外しますか?


143

ファイルの使用.git/info/exclude.gitignore除外についての長所と短所について少し混乱しています。

どちらもリポジトリ/プロジェクトのレベルにあるので、どのように違い、いつ使用する必要があります.git/info/excludeか?

回答:


195

の利点は.gitignore、とは異なり、リポジトリ自体にチェックインできることです.git/info/exclude。別の利点は.gitignore、とは異なり、ディレクトリ固有の無視ルール用に各ディレクトリ/サブディレクトリ内に1つずつ、複数のファイルを持つことができることです.git/info/exclude

したがって、.gitignoreリポジトリのすべてのクローンで利用できます。そのため、大規模なチーム内のすべての人がファイル例の同じ種類を無視しています *.db*.log。また、複数であるため、より具体的な無視ルールを設定でき.gitignoreます。

.git/info/excludeは個々のクローンでのみ使用できるため、ある人が自分のクローンで無視したものは、他の人のクローンでは使用できません。たとえば、誰かがEclipse開発に使用している場合、他の開発者がEclipseを使用していない可能性があるため、その開発者が.buildフォルダーを追加することは理にかなっています.git/info/exclude

一般に、普遍的に無視する必要があるファイル/無視ルールはに入る必要があり.gitignore、そうでなければ、ローカルクローンでのみ無視したいファイルは.git/info/exclude


しかし、理想的には、Gitの公式ドキュメント(git-scm.com/docs/gitignore
Devendra Swami

@DevendraSwami ~/.gitignore上記のコメントでどの特定のエントリを入力するべきかわかりませんでした。私の理解は、無視ルールは3つのレベルにある可能性があることです- $PROJECT/.git/info/exclude(プロジェクト、ユーザー)固有の無視ルール、$PROJECT/<any number of directories>/.gitignoreつまり任意のユーザーのプロジェクト固有の無視ルール(チェックイン時)、~/.gitignore そのユーザーのプロジェクトのユーザー固有の無視ルールそのマシンで。目的に応じて、あなたは内のエントリを置く場所を選ぶ。
ムー無

ええ、あなたは絶対的に正しいです。私のコメントは、この質問に関連していたstackoverflow.com/questions/59673991/...
デヴェンドラスワミ

元の不完全なコメントをお詫び申し上げます。
Devendra Swami

2
@ ShimmyWeitzhandler、slnファイルはすでにリポジトリにありますか?次に、excludeまたは.ignoreを使用しても、gitによる変更の追跡が妨げられません。次のいずれかを試してくださいgit rm --cached <path-name>。リポジトリから削除されますが、ローカルに保持されます。 git update-index --skip-worktree <path-name>ファイルへの変更は無視しますが、リポジトリに保持します。好奇心から:なぜslnファイルを除外したいのですか?.Netソリューションの重要な部分ですね。
公園

36

グーグル:ファイルを除外する3つの方法

  1. .gitignore このリポジトリのすべてのクローンに適用されます(バージョン管理され、誰もがそれを持ちます)、
  2. .git/info/exclude このリポジトリのローカルコピーにのみ適用されます(ローカル、他のユーザーとは共有されません)。
  3. ~/.gitignore コンピュータ上のすべてのリポジトリに適用されます(ローカル、他のユーザーとは共有されません)。

3. 実際にあなたのコンピュータに設定を行う必要があります:

git config --global core.excludesfile '~/.gitignore'

2
うん、私もそれを読んだが、もっと実用的な(現実の)視点を取得したかった:-)
Parag

リンクされたブログは、リンク先のドキュメントで確認されているとおり.git/info/excludes、誤ってファイルを呼び出す必要が.git/info/excludeあります。
mwfearnley 2015年

13
(ネタバレ:3番目の方法は〜/ .gitconfigの設定によるコンピューターグローバルな無視です)
hmijailが辞任者を悼む

@hmijail:ありがとう、この回答にコメントを含めました
LeGEC

12

私たちの(現実の)エクスペリエンスを提供するためだけに:各開発環境でいくつかの構成ファイルをカスタマイズする必要があるときに.git / info / excludeを使い始めましたが、ソースをリポジトリで維持し、他の開発者が利用できるようにしたいと考えました。

この方法では、ローカルファイルを複製して変更すると、リポジトリから元のファイルに影響を与えることなくコミットから除外できますが、リポジトリ内で無視されることはありません。


4

プロジェクトに.gitignore固有の無視ルールに使用します。ご使用の環境に固有の無視ルールについては、またはグローバル無視ファイルを使用してください。exclude

たとえば、私のグローバル無視ファイルは、使用しているエディタによって生成された一時ファイルを無視します。このルールは環境に固有であり、同じプロジェクトの他の開発者(異なるエディタを使用している可能性があります)によって異なる場合があります。OTOH、私のプロジェクト.gitignoreファイルでは、APIキーやビルドアーティファクトなどは無視されます。これらはプロジェクト用であり、プロジェクトのすべてのユーザーが同じにする必要があります。

それは役に立ちますか?

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