.gitignoreは特定のファイルを除外します


94

.gitignoreファイルを使用してtemplates.jspublic/app/フォルダー内にあるものを除外しようとしています。私の.gitignoreファイルは次のようになります。

/vendor
/node_modules
composer.phar
composer.lock
.DS_Store
templates.js

しかし、Git Guiをチェックインすると、templates.jsファイルはまだ表示されています。を使用してファイルを具体的に除外するにはどうすればよい.gitignoreですか?


2
それは、ファイルが以前にリポジトリにすでに追加されていることを意味しますか?.gitignore追加するコンテンツのみを無視します。
Willem Van Onsem 2015年

2
@CommuSoftはい、以前にリポジトリに追加されています。では、どうすれば今すぐ除外できますか?私のやり方は.gitignore正しいですか?
user1995781 2015年

回答:


152

「無視する」という名前が示唆するものとは対照的です。ファイル.gitignoregit add作成するときにのみ参照されます。つまり、リポジトリ(のインデックス)にすでに追加されているファイルは、に基づいて除外されません.gitignore

まず.gitignore、ファイルが追加されないように変更することをお勧めします。次の行を.gitignoreファイルに追加します。

public/app/template.js

次に、ファイルをリポジトリから除外する必要があります。おそらく、ファイルシステムからファイルを削除したくない場合、次の方法で実行できます。

git rm --cached public/app/template.js

この--cachedフラグは、ファイルがファイルシステムから削除されないようにします。(重要でない場合は、使用することができgit rm public/app/template.jsこれは、ファイルを削除します)。

バックグラウンド

.gitignore積極的に使用されない理由は、をオーバーライドしたい場合があるためです.gitignore。あなたが追跡したくないインスタンスの言う*.logあなたが指定することができ、ファイルの*.log中に.gitignore。ただし、追跡したい特定のものがある場合は、を追加できgit add -f some.logます。-fフラグは、強制的にgitファイルを追加します。


ライフセーバーは、私の資格情報を公開していた
mLstudent33

21

ファイルがgitリポジトリに「追加」されると、.gitignoreファイルにリストされているかどうかに関係なく、引き続き追跡されます。

以前にtemplate.jsファイルを追加したと思います。その場合、リポジトリから削除するまで、変更が追跡され続けます。ファイルがリポジトリから削除されると、.gitignoreファイルを介して適切に無視されます。

ファイルを削除せずにgitリポジトリ(コマンドライン)から削除する方法は次のとおりです。

git rm --cached FILENAME

次に、それを実行してgitignore内のファイルでコミットしようとすると、それは実行されません。

gitignoreにあるファイルを具体的に追加する場合、ファイルを手動で追加するとgitignoreが上書きされることに注意してください。


ありがとうございます。「
gitrm

11

すでにファイルを追跡している場合(そのgit add上とgit commit)、.gitignore役に立ちません。

あなたが望むのは、ファイルの追跡を停止し、それを使用.gitignoreしてファイルを除外することだと思います。ファイルの追跡を停止してファイルを保持するには、次を使用します。

git rm --cached <file>


dvしませんでしたが、おそらくあなたはあなたの言葉をよりよく選択するべきだと思います。リポジトリに保持することは、ローカルファイルシステムに保持することとは少し対照的です。リポジトリはしないマップ...ファイルシステム上
ウィレム・ヴァン・Onsem

@CommuSoftある程度の満足度に修正されましたが、他の人がよりよく答えているので、私はあまり注意していませんでした。提案をありがとう。
ロス

7

この場合、で追跡templates.jsを停止できます

git rm --cached public/app/templates.js

他の人が説明しているように、.gitignore追加されるコンテンツのみを無視します。たとえば、を頻繁に使用git add .して持っtemplates.jsている.gitignore場合、gitはそれを追加しません。

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