Gitはgitignoreにないファイルを無視しています


117

画像ファイルや他のいくつかのファイルを無視しているgitリポジトリがありますが、私の.gitignoreファイルにはconfig.phpファイルを無視しているだけです。どこかに見つからないように見えるグローバル無視ファイルはありますか?追加するファイルを指定する必要があり、次の警告が表示されます。

次のパスは、.gitignoreファイルの1つによって無視されます。

私の~/.gitconfigファイルの内容は私の電子メールアドレスだけです。


回答:


198

git check-ignore

git check-ignoreコマンドを使用してgitignoreファイルをデバッグします(ファイルを除外します)。

例えば:

$ git check-ignore -v config.php
.gitignore:2:src    config.php

上記の出力は、指定された各パス名(行を含む)の一致パターン(存在する場合)に関する詳細です。

したがって、おそらくファイル拡張子は無視されず、ディレクトリ全体が無視されます。

返される形式は次のとおりです。

<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>

または、次のコマンドを使用して.gitignore、ユーザーのHOMEおよびリポジトリフォルダーを印刷します。

cat ~/.gitignore "$(git rev-parse --show-toplevel)"/.gitignore "$(git rev-parse --show-toplevel)"/.git/info/exclude

またはgit add -f、無視されたファイルを追加できるようにするを使用します。

詳細についてはman gitignoreman git-check-ignoreを参照してください。

構文

git check-ignore [オプション]パス名…

git check-ignore [オプション] --stdin


5
これは受け入れられた答えよりもはるかに優れています。あの人には害はないが、これは私の日を救った。ケノーブありがとうございます。
luanjunyi

1
賛成投票に値する。/ vendor /フォルダーにある奇妙なgitignoreが最新のgitバージョンで問題を引き起こしていることがわかりました。
Manuel Arwed Schmidt、2015

2
これは今日私を救った... Visual Studioがユーザーのドキュメントフォルダーにgitignore_global.txtと呼ばれるファイルを作成し、これが無視できない(無視できない)ファイルを無視していたようです
Samuel

1
私の問題を完全に解決しました。見づらい柄もございます!!
Willa

54

git構成に、無視される追加のパターンを含むファイルへのパスであるcore.excludesfileが含まれている可能性があることを知っておくとよいでしょう。(問題のあるgit repoで)を実行することで、そのような構成があるかどうかを確認できます。

git config core.excludesfile

ファイルパスを出力する場合は、詳細についてそのファイルの内容を確認してください。

私の場合、パターン「Icon?」を無視した古いバージョンのboxenを介してgitをインストールしました 私の場合、この質問で述べたフォルダアイコンの警告が表示されました(大文字と小文字を区別しないファイルシステムを使用しているため、Icon?がアイコンと一致します)。


2
これは確かに私の問題でした。このファイルがいつどのように編集されたかはわかりませんが、私がリストしたいファイルがリストに含まれていました
toxaq '26 / 02/26

2
ありがとう、あなたは私に数時間の純粋な苦痛を救いました。私の場合は、ドキュメントツリーの下に論理的に作成されていないソースツリー(git repoを視覚化するツール)のインストールで、多くの除外が含まれているgitignore_global.txtでした。
機械的オブジェクト

私は同じIcon?ことを無視されていました。
Justin Skiles、2015

これは私にとって事実でした。グローバル無視ファイル内にかなりの数のルールがありました。ヒントをありがとう+1
Madness

* .jsonをグローバルに無視しました-悪夢について話します-ありがとうございます!
Jason Perfetto、

31

これらをチェックしてください:

  1. 他の.gitignoreファイルが多数ある可能性があるため、探しましたか。

  2. また、REPO / .git / configを見て、そこに何かあるかどうかを確認します。

  3. リポジトリの除外ローカルのリポジトリごとのルールをリポジトリの.git / info / excludeファイルに追加できます。これらのルールはリポジトリでコミットされないため、他のユーザーと共有されません。このメソッドは、エディターによって作成されたファイルのように、他のユーザーが生成することを期待しないローカルで生成されたファイルに使用できます。


リポジトリには他の.gitignoreファイルはありません。また、何も無視する.git / configファイルには何もありません。.git / info / excludeはどのように構成されていますか?
イアンハンター

4
この回答が回答済みとマークされている理由は明らかではありません。この問題はどのように正確に解決されましたか?
次の開発者

除外は私の問題でした。無視する方法が他にもあることは知っていましたが、それを以前は使用していましたが、それがどこにあるのか忘れてしまいました!
チャッキー

22

私は同じ問題を抱えていました-gitによってこのエラーでディレクトリが無視されていました:

➭ git add app/views/admin/tags/
The following paths are ignored by one of your .gitignore files:
app/views/admin/tags
Use -f if you really want to add them.
fatal: no files added

私は最終的に私の問題が私の行であることがわかりました~/.gitignore_global

TAGS

パスと一致していましたapp/views/admin/tags。グローバルgitignoreファイルにスラッシュを追加して修正しました

/TAGS

そしてgitが再び私のディレクトリの追跡を開始しました。


3
部分一致を検索させるための+1 ... gitignore_global.txtに「[Rr] elease * /」が含まれていたため、「releasenotes」ディレクトリが無視されていました。
Trev

さらに難しくするために、gitは新しく追加されたファイルのみを無視し、すでにリポジトリにあるファイルは無視しません。したがって、.gitignoreに「foo /」を追加すると、すべてのファイルではなく、fooサブディレクトリに最近追加されたファイルのみが無視されました。一部のファイルが無視され、他のファイルが無視されなかった理由を理解するのに1時間かかりました。
ccleve

私は同じ問題を抱えています。SourceTreeは、ツールメニュー->オプション項目-> Gitタブで〜/ .gitignore_globalファイルを設定します。フィールドのグローバル無視リストをクリーンアップした後、「git add ...」コマンドが機能しました。
ケイト

同じ問題がありました。help無視されていたディレクトリがありました。幸い、私はあなたの答えをすぐに見つけました。
アブドゥルサディクヤルシン2018

9

私にとって、〜/ .gitignore_globalファイルに誤ってワイルドカードが含まれていました。たぶんそこをチェック?


1
それはまさに私にとって問題でした。そこに* .pngがありました。
Shahar、2016年

3

もう1つ試してみると.git、プロジェクトディレクトリAの下に独自のリポジトリがネストされたディレクトリB がありました(サブモジュールとしてではありません)。私はBにいくつかの変更を加え、それを正真正銘のサブモジュールにしたいと考えました。git Aは独自のリポジトリを含んでいたため、git Aは自動的にBを無視していたと思います(サブモジュールのないネストされたgitリポジトリを参照してください)。私はBフォルダーの名前を変更し、それをサブモジュールとして再度複製しようとすると、誤解を招く「ignored by .gitignore」エラーメッセージが表示されました。解決策は.git、B から削除する ことでした。


2

私はあなたとまったく同じ問題を抱えていました。あなたが受け取った唯一の返信は確認するためのいくつかの場所をリストしましたが、それらのどれも私のために問題を解決しませんでした、そしてあなたのコメントから私もあなたのために考えていません。ディレクトリツリーの下に隠れている他の.gitignoreファイルはありませんでした。.git / configには何もありません。.git / ingore / excludeには何もありません

それでも問題が解決しない場合は、この回答を確認してください。それは私のために問題を解決しました

基本的に、〜/ .gitignoreファイルを確認します。私の名前は〜/ .gitignore_globalでした。いつ作成されたかわかりません(私は確かにそれをしなかった)が、私が最初にインストールしたときにそれらの一つはそこに入れている必要がありますので、私は、別のgitの設定のトンを試してみました。

彼の答えがあなたにも役立つことを願っています!


1

gitからこのエラーメッセージを受け取るもう1つの理由はgit submodule add、前のgitコマンドがクラッシュしてロックファイルを残したままコマンドを実行したときです(これは、たとえば、gitコマンドを含むカスタムスクリプトを使用していて、クラッシュ)。

git commit代わりにコマンドを実行すると、どの条件も変更されていない間(ファイルのせいgit submodule addだと叫ぶことになります.gitignore)、代わりに別のエラーレポートが表示されます。

$ git commit -a
fatal: Unable to create '..../.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

そして実際にロックファイルを削除します:

rm .git/index.lock

問題を解決します。(これはgitバージョン2.1.0.9736で発生します。将来のgitリリースで修正される可能性があります。)


おかげで、これが私が抱えていた問題であることが判明しました。ライフセーバー!
JDawgg 2017年

1

フォルダへのアクセス権があることを確認してください。私はこれに遭遇しましたが、それはフォルダが、ターミナルにログインしたユーザーではなく、www-dataユーザーによって所有されていたためです。


1

私の場合、それは私のパスのスラッシュが問題の原因でした...

うまくいかない

/srv/bootstrap/

作業

srv/bootstrap/

1

もう1つ、現在のディレクトリで書き込みまたは実行のためにrootアクセスが必要な場合は、rootユーザーであることを確認してください。実際にサブモジュールを追加しようとすると奇妙なエラーが発生し、gitは、クローン先のパスがgit ignoreファイルによって無視されていると文句を言い続けました。次にrootユーザーに変更し、サブモジュールaddを再度実行したところ、問題はありませんでした。


0

また、一部のGitクライアント(Mac OS X上のAtlassian SourceTreeなど)によって作成される可能性のあるものも確認~/.gitignore~/.gitignore_globalてください。


0

.gitignoreファイルがそれ自体を無視していないことを確認してください。よくある間違いは、現在のフォルダー内のすべて*.gitignoreファイルを無視するルールをファイルに追加することです。これに対する解決策は、に例外を追加すること.gitignoreです:

*
!.gitignore

この方法では、ディレクトリ内のすべてのファイルが無視され.gitignoreます。

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