web-dev-qa-db-ja.com

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

.gitignoreファイルを使用して追加されるファイルを除外することは承知していますが、ソースツリーに複数のconfig.phpファイルがあり、ルートにある1つのみを除外する必要があります。

これを実現するために.gitignoreに何を書き込む必要がありますか?

329
Pavel Karoukin

ドキュメント から:

パターンにスラッシュ/が含まれていない場合、gitはそれをシェルglobパターンとして扱い、.gitignoreファイルの場所に相対するパス名との一致をチェックします(.gitignoreからではない場合は、作業ツリーの最上位を基準にします)ファイル)。

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

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

/config.php
497
Manoj Govindan

/config.phpを使用します。

74
Richard Fearn

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

/config.php
!/*/config.php

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

/config.php
24
kenhowardpdx

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

#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
14
drugan