git でファイルを無視するには、通常は
.gitignore
や .git/info/exclude
を使います。
しかし、既に git 管理下にあるファイルは、これらの設定があっても無視されません。
以下の方法を使えば、git 管理下にあるファイルをあえて無視することが可能です。
方法
次の2つの方法があります。どちらを使っても、ファイルの変更を無視できます。方法(1) assume-unchanged
git update-index --assume-unchanged [ファイル名]
この設定を取り消すには次のようにします。
git update-index --no-assume-unchanged [ファイル名]
方法(2) skip-worktree
git update-index --skip-worktree [ファイル名]
この設定を取り消すには次のようにします。
git update-index --no-skip-worktree [ファイル名]
設定の確認
上記の設定がされているファイルを確認するには、次のようにします。
git ls-files -v
- assume-unchanged 設定のファイルは、状態が小文字で表示されます。
- skip-worktree 設定のファイルは、状態が S と表示されます。
assume-unchanged と skip-worktree の違い
この2つは、以下の点が違います。
●assume-unchanged : そのファイルが作業ツリー上で変更されているときでも、git はその変更を無視して変更されていないとみなします。
●skip-worktree : そのファイルが作業ツリー上で変更されているときには、git はその変更を保ちます。
これは、以下のような状況で動作の違いとしてあらわれます。
作業ツリー上でファイル更新があって、
●assume-unchanged : 作業ツリー上の更新は破棄されます。
●skip-worktree : 作業ツリー上の更新は保持されます。