Gitグローバル無視が機能しない


83

ファイル.gitignore_globalを作成して、gitinstallディレクトリに配置しました。コマンドを実行すると:

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

無視ファイルのルールはコミットに適用されません。

ファイルの名前を変更.gitignoreしてプロジェクトルートに配置すると、ルールが適用されます。

ここで何が問題になっていますか?


@Jarrod `〜/ .gitignore_global`は、OPが意味するものであり、投稿のタイプミスにすぎませんでしたが、彼は私の答えを受け入れたので、編集は良くありません
CharlesB 2012年

回答:


167

多分あなたはする必要があります:

git config --global core.excludesfile ~/.gitignore_global 

そして、コーヒーを飲みます。


すみません、それが私が意味したことです。私がコピーしたものは、何が機能するかを確認するためにいじっていました。
user880954 2011

コーヒーと歯に当てはまります。.gitignore_globalが$ HOMEにあることを確認しますか?あなたはそれをgitinstallディレクトリにインストールしたと言いますか?
CharlesB 2011

それがまだここで機能しない理由は何ですか?スキップしたい.7zファイルを取得しました。これらのルールを追加しました:gist.github.com/octocat/9257657 ; ファイルを変更した後も、.gitでバージョン管理されます:(
Aquarius Power

2
はい、gitignoreファイルは追跡されていないファイルに対してのみ機能し、以前に追加されたファイルに対しては機能しません
CharlesB 2014年

1
私が今気付いたもう1つのことは、.gitignore_globalファイルの行のパターンが、プロジェクトのメインディレクトリからのパスと正確に一致している必要があることです。たとえば、プロジェクト名がmyProjectで、myProject / sql / initにSQLコードを生成し、myProject / sql / init / *。sqlを無視する場合、エントリは* / sql / init /である必要があります。同様に、myProject / msg / dao /およびmyProject / daoで生成されたDAO / DTOコードの場合、daoサブディレクトリ内のすべてのファイルをキャッチするために2つのエントリが必要です-* / * / dao /および* / dao /を追加する必要があります。
キースキブラー2017

80

私はこれをチップインすると思った。グローバル無視ファイルが機能していないように見える別の理由があります。これは、以前の回答ではカバーされていないと私が思うものです。それは非常に明白なので、もちろん、見逃しがちです。

つまり、gitは新しいファイルのみを無視します。ファイルがすでにgitによって追跡されている場合、もちろんgitはそれを無視しません!したがって、gitignoreまたはexcludeファイル内のどのパターンも適用されません

それは理にかなっている。なぜgitはすでに追跡しているファイルへの変更を無視したいのですか?ファイルを無視する場合は、最初にgitに追跡しないように指示し、次にgitにマニュアルの説明に従って無視するように指示する必要があります。ファイルの追跡を解除する方法については、この回答を参照してください

これはすべて私に尋ねるように導きます、追跡されたファイルへの変更を無視することは可能ですか?繰り返しますが、gitは配信します。この答え; Git:追跡されたファイル無視するとコマンドが表示されますfile無視したいファイルに置き換えてください):

git update-index --assume-unchanged file

最後に、gitignoreのデバッグに関する追加情報があります。

gitignore(5)マニュアルページを教えてくれる:

ユーザーがすべての状況でGitに無視させたいパターン(たとえば、選択したユーザーのエディターによって生成されたバックアップファイルまたは一時ファイル)は、通常、ユーザーの〜/ .gitconfigのcore.excludesfileで指定されたファイルに入ります。デフォルト値は$ XDG_CONFIG_HOME / git / ignoreです。$ XDG_CONFIG_HOMEが設定されていないか空の場合、代わりに$ HOME / .config / git / ignoreが使用されます。

したがって、これは新しく、以前のものに置き換わるものです ~/.gitignore_global前述の前述のです。

次に、これは非常に便利です。1.8.2の時点で、いくつかの優れたデバッグツールが用意されています。見て:

Gitはよりよく無視することを学ぶ-1.8.2の新機能

これは、新しいcheck-ignoreフラグを使用して、gitがパターンを正常に無視していることを確認する方法を示しています。

git check-ignore bin/a.dll --verbose


7
git update-index --assume-unchanged fileまさに私が探していたものでした、ありがとう!
ジャイ

14

私がglobal core.excludesfileこのように定義したとき、私はそれを見つけました:

git config --global core.excludesfile $HOME/.config/git/ignore

それはうまくいきませんでした。次の$HOMEように、変数を使用しないように変更します。

git config --global core.excludesfile ~/.config/git/ignore

それはすぐに働き始めました。これが他の誰かに役立つことを願っています。

ご参考までに:

$ git --version
git version 1.7.10.2 (Apple Git-33)

私もこれを観察しました。ドキュメントをざっと読みましたが、何も見つかりませんでした。.gitignore(ディレクトリごと)と.git / info / excludeに加えて、gitはこのファイルを調べて、追跡することを意図していないファイルのパターンを探します。「〜/」は$ HOMEの値に展開され、「〜user /」は指定されたユーザーのホームディレクトリに展開されます。
rliu 2014

9

注:git1.7.12以降(2012年8月)

の値:

  • core.attributesfile デフォルトは$ HOME / .config / git / attributesで、
  • core.excludesfile$HOME/.config/git/ignoreこれらのファイルが存在する場合、デフォルトは それぞれになります。

したがって、$HOME/.config/git/attributesファイルを作成する場合は、設定を行う必要もありませんcore.excludesfile


4

ファイルはホームディレクトリにある必要があります。Windowsでは、通常、C:\ documents and settings \ [user]を意味します。

Linuxでは次のようになります:/ home / [user]


2

この問題が発生したのは、最初に「git config core.excludefiles」を--globalなしで間違った値で呼び出したため、プロパティがローカルに保存されていたためです。ローカルプロパティがグローバルプロパティ(正しい値を持っていた)を隠し、完全に無視しているように見えます。


2

グローバルgitignoreが機能していない可能性があるもう1つの理由は、パス内の非表示の文字です。

git-check-ignoreからの警告メッセージをChromeのアドレスバーに貼り付けたときに、これが私の問題であることがわかっただけで、幸運にもそれが表示されました。

ここに画像の説明を入力してください

(端末には表示されませんでした。これは、デバッグの長いうさぎの穴だった可能性があります...😅)


1

私は同じ問題を抱えていました(Windows上で)。私は自分の~/.gitconfigファイルをチェックすることになり、自分excludesfileが次のように設定されていることがわかりました。

excludesfile = C:\\Users\\myUserName\\Documents\\gitignore_global.txt

しかし、それはそうあるべきでした:

excludesfile = C:\\Users\\myUserName\\.gitignore_global

変更した後は、すべてが正常に機能しました。


1

また、このファイルのエンコードに関して面白いことがありました。どういうわけか私のWindows10(Powershell付き)は「UTF-16LE」というエンコーディングでファイルを作成しましたが、どういうわけかGitはこれを処理できませんでした。エンコーディングを文字通り他のもののはるかに賢明な値に変更すると、それは機能しました。


0

.gitignore(_global)が機能していないように見えるもう1つの追跡が難しい理由は、行の先頭にスペースがある可能性があります。このファイルは先頭のスペースを許容していません。したがって、空白行でない限り、ファイルの各行に何も含まれていないことを確認してください。理解するのに少し時間がかかりました。

私の2セントを追加するだけです。


0

最近間違えて次のコマンドを実行するとgit config core.excludesfile tags 、excludesfileパスが現在のリポジトリ内のローカルファイルに変更され、この構成がの下 のローカル構成ファイルに書き込まれた.git/configため、.git/configファイルを開いて行を削除したことを修正しましたexcludesfile tagsそして、すべてが正常に戻ります。

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