Gitのルートフォルダーからのみファイルを除外する方法


399

.gitignore追加されている一部のファイルを除外するためにfileを使用することは承知していますがconfig.php、ソースツリーにいくつかのファイルがあり、ルートにある1つだけを除外する必要があります。

.gitignoreこれを実現するために何を書けばよいですか?

回答:


589

ドキュメントから:

パターンにスラッシュ/が含まれていない場合、gitはそれをシェルグロブパターンとして扱い、.gitignoreファイルの場所を基準にしたパス名との一致をチェックします(.gitignoreからでない場合は、作業ツリーのトップレベルを基準にして)ファイル)。

先頭のスラッシュはパス名の先頭と一致します。たとえば、「/ *。c」は「cat-file.c」と一致しますが、「mozilla-sha1 / sha1.c」とは一致しません。

したがって、次の行をルートに追加する必要があります.gitignore

/config.php

1
ありがとうございました!この方法で試しましたが、何らかの理由でうまくいきませんでした。おそらく何かを
間違って

1
それがファイルではなくフォルダーであり、リポジトリルートのそのフォルダー、含まれているファイル、すべての子孫サブフォルダーとそのファイルを無視したい場合はどうなりますか?/folder/
CodeManX 2015

11
どちらか/folder/または/folder動作しますが、両端にスラッシュを追加すると、フォルダのみにマッチを制限します。ルートディレクトリに「foo」という名前のファイルがある場合/foo/、それ/fooは無視されませんが、無視されます。
tehDorf 2017年

すでにファイルをコミットしている場合は、commandを実行git rm --cached <file>します。それ以外の場合、ファイルは無視されません。From:stackoverflow.com/a/1274447
Bruno Polo


29

古いバージョンのgitでは、最初に無視パターンを定義し、すぐに(次の行で)除外を定義する必要があります。[バージョン1.9.3(Apple Git-50)でテスト済み]

/config.php
!/*/config.php

それ以降のバージョンでは、以下のみが必要です[バージョン2.2.1でテスト済み]

/config.php

17

上記の解決策がうまくいかない場合は、これを試してください:

#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一人ではうまくいきませんでした。なぜそうしなかったのか、私は興味があります。アイデアはありますか?
iago-

@ iago-lito特定のプロジェクトに取り組んでいて、特定のディレクトリにあるfile.extを無視し、それを他の場所で無視しないようにするのに苦労している場合は、これを/home/me/.gitignoreファイルに入れます。 /home/me/path/to/my/project/some/folder/file.extまたはfile.extすべての場所でファイルを無視し、/ home / me / path / to / my / project / some / folder / .gitignoreファイルは、この特定のディレクトリにあるこのファイルを無視しないように、この!file.extを配置します 各フォルダーは、親の.gitignoreファイルの設定を上書きする独自の.gitignoreファイルを持つことができます...
Drugan

うーん。これは、他のユーザーが~/.gitignore自分のマシンに別のファイルを持っているかどうかによって、リポジトリの動作が異なる可能性があることを意味しますよね。
iago-lito

はい、プロジェクトが未知の環境に存在する可能性がある場合は、プロジェクトのルートフォルダーの上にある.gitignoreファイルに依存しないでください。config.phpのようなファイル名は非常に一般的であるため、ルートの.gitignoreファイルでこのファイルの既存の設定をオーバーライドしてください。
Drugan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.