回答:
ドキュメントから:
パターンにスラッシュ/が含まれていない場合、gitはそれをシェルグロブパターンとして扱い、.gitignoreファイルの場所を基準にしたパス名との一致をチェックします(.gitignoreからでない場合は、作業ツリーのトップレベルを基準にして)ファイル)。
先頭のスラッシュはパス名の先頭と一致します。たとえば、「/ *。c」は「cat-file.c」と一致しますが、「mozilla-sha1 / sha1.c」とは一致しません。
したがって、次の行をルートに追加する必要があります.gitignore
。
/config.php
/folder/
?
/folder/
または/folder
動作しますが、両端にスラッシュを追加すると、フォルダのみにマッチを制限します。ルートディレクトリに「foo」という名前のファイルがある場合/foo/
、それ/foo
は無視されませんが、無視されます。
git rm --cached <file>
します。それ以外の場合、ファイルは無視されません。From:stackoverflow.com/a/1274447
を使用し/config.php
ます。
古いバージョンのgitでは、最初に無視パターンを定義し、すぐに(次の行で)除外を定義する必要があります。[バージョン1.9.3(Apple Git-50)でテスト済み]
/config.php
!/*/config.php
それ以降のバージョンでは、以下のみが必要です[バージョン2.2.1でテスト済み]
/config.php
上記の解決策がうまくいかない場合は、これを試してください:
#1.1 Do NOT ignore file pattern in any subdirectory
!*/config.php
#1.2 ...only ignore it in the current directory
/config.php
##########################
# 2.1 Ignore file pattern everywhere
config.php
# 2.2 ...but NOT in the current directory
!/config.php
/config.php
一人ではうまくいきませんでした。なぜそうしなかったのか、私は興味があります。アイデアはありますか?
~/.gitignore
自分のマシンに別のファイルを持っているかどうかによって、リポジトリの動作が異なる可能性があることを意味しますよね。