Git:追跡されたファイルを無視する


181

コードをビルドするときに自動的に変更されるいくつかの追跡ファイルがリポジトリにあります。追跡を解除したくありません。変更されたように見せたくないだけでなく、git addでステージングしたくない場合もあります。

これは可能ですか?



5
これらのファイルがビルドによって自動的に生成される場合は、gitで追跡しないでください。
15年

ここでは便利かもしれないことをgitignoreの簡単なチュートリアルです:learningpassion.wordpress.com/2016/06/17/...
ジョーカー

回答:


282

承知しました。

git update-index --assume-unchanged [<file> ...]

元に戻して追跡を再開するには:

git update-index --no-assume-unchanged [<file> ...]

3
変更をプルした場合、この状態のファイルはどうなりますか?
ヘイマンズフィールド、2012年

2
@haymansfieldコマンドのヘルプページには次のように書かれていますGit will fail (gracefully) in case it needs to modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is changed upstream, you will need to handle the situation manually.
Parham

3
--assume-unchangedクローニングに適用する方法はありますか?すべてのユーザーがファイルを持っているが、diffsでのローカルの変更は表示されないようにするため。
Gauthier

10
@Tyler-いいえ、ファイルがgitによって追跡されると、そのファイルが.gitignoreに表示されていても、常に追跡されます。私のユースケースは、「ここに、資格情報を保存するファイルの基本テンプレートです。今度はそれをコミットしないでください」のようなものです。
Jon V

5
@watbywbarifコマンドをgit update-index --no-assume-unchanged $(git ls-files $(git rev-parse --show-toplevel))gitエイリアスとして設定しています。私はそれがこれらの悪ふざけの一部であると疑うときはいつでも、それをやるだけです。
フィリップカーフィン

6

別のアプローチ(セスロバートソンによる削除済みの回答からですが、役に立ちましたので復活させます)は、「追跡された」テンプレートファイルを維持し、ローカルの追跡されていないバージョン(例:「config.sample.ini」または「 config.ini.template」の完全な例については、https: //gist.github.com/canton7/1423106を参照してください

そうすれば、ファイルがgitなどで変更されても心配ありません。ローカルの追跡されていないファイルで.gitignoreを(最終的に)使用できます。


5

filterコマンドでgit属性と%fを使用する別のソリューション:

git config filter.orig.clean "cat %f.orig"
cp filename filename.orig
echo "filename filter=orig" >> .git/info/attributes
echo "filename.orig" >> .git/info/exclude

16
これが何を意味するのか、それが偶然何をしているのかについて詳しく教えてください。
ロジャーパック2017年

これにより、元のテキストを持つ「.orig」ファイルからコンテンツを読み取るファイルのフィルターが追加されます
koct9i
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.