2013-07-23 18 views
8

私はgitを初めて使っています。私は何が間違っているのか分かりません。私は実行したい git diff --name-only しかし、これらのファイルが変更されたとしても、変更されたgit diffを出力しないようにする.testで終わるファイルを除外したい。 これらのファイルを.gitignoreファイルに追加しようとしましたが、git diffコマンドを実行すると.gitignoreがインクルードされます。Git diffは.gitignoreの指定されたファイルを無視しません

私は間違っていますが、git diffを実行するとファイルを除外するにはどうすればよいですか?

+1

あなたは後に、あなたがそれを投稿することをしなかった場合、私たちが見ることができる、あなたのgitignoreファイルでミスを犯したかもしれない。また、あなたの.gitignoreファイル – bengoesboom

+1

の内容を表示します。 – usumoio

答えて

15

これは間違ったことです。 Gitはプロジェクトの早い段階でそれらのファイルを追跡し始めているので、それらのファイルを追跡し続けます。いくつかの時点で、それ以前は、初期のように見えたそのコミット実行しなかった:物事を置く

git add . # this added everything to the tracking system including your .test files 
git commit -a -m 'I just committed everything in my project .test files included' 

があなたのgitignoreファイルは、あなたのプロジェクトに入るの.TESTで終了した作成し、将来のファイルを保持しますが、削除する必要があります.testファイルはすでにgitのメモリから追跡するようにgitに指示しています。 gitignoreに物を置いても、すでに追跡されているファイルに対するアクションは実行されません。あなたが今行う必要があることはこれです:

オプション1:

# you can remove the files from gits tracking system and then put them back 
# when you go to put them back now git will have no memory of tracking these 
# and will consider future edits to be ignored 
# Back your .test files up before doing this, and this will delete them from your project 
git rm /path/to/your/file.test 

オプション2:オプション2を実行すると

# this is safer but does not use gitignore at all 
git update--index --assume-unchanged /path/to/your/file.test 

ファイルという時間の残りのためにgitを言っています実際にはそうであっても変わらない。これはあなたの.testファイルを(現在のように)あなたの追跡プロジェクトの一部として保持することができるが、gitはそれらの変更についてあなたを悩ますことはない。この操作はいつでも元に戻すことができ、破壊的ではないので、より安全です。また、使用する前にそれに目を通すべきです。

https://www.kernel.org/pub/software/scm/git/docs/git-update-index.html

+2

git 1.8の場合、コマンドは です。git update-index --assume-unchanged /path/to/your/file.test ところで、素晴らしい答え、それは私を助けました。 – fabregas88

+0

問題はありません、私は助けることができてうれしいです。 – usumoio

+4

'git rm --cached'を使うとインデックスからのみファイルが削除されます - あらかじめバックアップする必要はありません。 – Graeme

関連する問題