ファイル.gitignore_global
を作成して、gitinstallディレクトリに配置しました。コマンドを実行すると:
git config --global core.excludesfile ~/.gitignore
無視ファイルのルールはコミットに適用されません。
ファイルの名前を変更.gitignore
してプロジェクトルートに配置すると、ルールが適用されます。
ここで何が問題になっていますか?
ファイル.gitignore_global
を作成して、gitinstallディレクトリに配置しました。コマンドを実行すると:
git config --global core.excludesfile ~/.gitignore
無視ファイルのルールはコミットに適用されません。
ファイルの名前を変更.gitignore
してプロジェクトルートに配置すると、ルールが適用されます。
ここで何が問題になっていますか?
回答:
多分あなたはする必要があります:
git config --global core.excludesfile ~/.gitignore_global
そして、コーヒーを飲みます。
gitignore
ファイルは追跡されていないファイルに対してのみ機能し、以前に追加されたファイルに対しては機能しません
私はこれをチップインすると思った。グローバル無視ファイルが機能していないように見える別の理由があります。これは、以前の回答ではカバーされていないと私が思うものです。それは非常に明白なので、もちろん、見逃しがちです。
つまり、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の時点で、いくつかの優れたデバッグツールが用意されています。見て:
これは、新しいcheck-ignore
フラグを使用して、gitがパターンを正常に無視していることを確認する方法を示しています。
git check-ignore bin/a.dll --verbose
git update-index --assume-unchanged file
まさに私が探していたものでした、ありがとう!
私が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)
の値:
core.attributesfile
デフォルトは$ HOME / .config / git / attributesで、core.excludesfile
$HOME/.config/git/ignore
これらのファイルが存在する場合、デフォルトは それぞれになります。
したがって、$HOME/.config/git/attributes
ファイルを作成する場合は、設定を行う必要もありませんcore.excludesfile
。
グローバルgitignoreが機能していない可能性があるもう1つの理由は、パス内の非表示の文字です。
git-check-ignoreからの警告メッセージをChromeのアドレスバーに貼り付けたときに、これが私の問題であることがわかっただけで、幸運にもそれが表示されました。
(端末には表示されませんでした。これは、デバッグの長いうさぎの穴だった可能性があります...😅)
また、このファイルのエンコードに関して面白いことがありました。どういうわけか私のWindows10(Powershell付き)は「UTF-16LE」というエンコーディングでファイルを作成しましたが、どういうわけかGitはこれを処理できませんでした。エンコーディングを文字通り他のもののはるかに賢明な値に変更すると、それは機能しました。
最近間違えて次のコマンドを実行するとgit config core.excludesfile tags
、excludesfileパスが現在のリポジトリ内のローカルファイルに変更され、この構成がの下
のローカル構成ファイルに書き込まれた.git/config
ため、.git/config
ファイルを開いて行を削除したことを修正しましたexcludesfile tags
そして、すべてが正常に戻ります。