Help us understand the problem. What is going on with this article?

既に git 管理しているファイルをあえて無視したい

More than 5 years have passed since last update.

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 : 作業ツリー上の更新は保持されて、リポジトリの内容は取り込まれません。

作業ツリー上でファイル更新があって、git reset --hard を実行したとき

  • assume-unchanged : 作業ツリー上の更新は破棄されます。
  • skip-worktree : 作業ツリー上の更新は保持されます。

何のために使うのか

そもそも、何のためにファイルを無視したいのでしょうか。

更新確認しなくていいファイルを無視することで git status などを高速化したい

例えば、ネットワークドライブを使っていてファイルアクセスが遅い場合などがそうです。

このために用意されたのが、assume-unchanged 設定です。
この設定がされていると、ファイルをチェックしなくなるので高速になるというわけです。

git 管理しているファイルがビルド時に更新されてしまうが普段は無視したい

開発環境によっては、こんな困ったファイルがあったりします。

  • ビルド時に自動生成するファイルではないので git 管理したい
  • ビルド時にそのファイルがあると日付だけ更新される

あるいは、ビルドで生成するファイルを git に入れている場合もあるかもしれません。

こういったファイルは、作業ツリー上では頻繁に更新しますが、git には触ってほしくありません。
このときには、skip-worktree 設定が使えます。

まとめ

git 管理下のファイルを無視する方法について書きました。

git は様々な細かいニーズに答えて開発されていると思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした