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

Gitで既に管理されているファイルをローカルで無視する方法

More than 1 year has passed since last update.

Gitで既に管理されているファイルをローカルで無視する方法

Gitでファイルを管理しない方法としては.gitignore.git/info/excludeに記述する方法があります。
これらの方法はGitでまだ管理されていない(Untracked)ファイルに対して行うものです。

しかし、既にGitで管理されているファイルをローカルで修正しても無視してもらいたいときがないでしょうか?
例えば、アプリケーションの設定ファイルをローカル用に少しだけ変更するときなど、Gitの管理から除外したいですよね。

今回は既にGitで管理されているファイルをローカルで修正しても無視できるような設定と確認方法について説明します。

方法は二つあります。

  • git update-index --skip-worktree
  • git update-index --assume-unchanged

それぞれについて説明します。

git update-index --skip-worktree

まずはgit update-index --skip-worktreeについてです。

どんな時に使う?

--skip-worktreeはローカルでファイルが変更されるものに対して実行します。

つまり「Gitで管理されているファイルをローカルで修正した(もしくは自動で更新された)けど、その変更はGitで管理してもらいたくない」という場合に使います。

ローカルでの変更をGitで管理されないようにするものですので、基本的にこちらのコマンドを利用することが多いと思います。

Gitの管理から除外する

$ git update-index --skip-worktree path/to/file

確認方法

$ git ls-files -v | grep ^S
  • git ls-filesでgitで管理しているファイル全てが表示されます。
  • -vで無視されているファイルを確認します。
  • --skip-worktreeの場合はSで表示をされます。

Gitの管理下に戻す

$ git update-index --no-skip-worktree path/to/file

git update-index --assume-unchanged

次にgit update-index --assume-unchangedについてです。

どんな時に使う?

--assume-unchangedはローカルでファイルが変更されるべきではないものに対して実行します。

つまり「ローカルで変更する必要がない(変更するべきではない)ファイルを無視する」という場合に使います。

--assume-unchangedは管理が不必要なファイルを無視することでGitの動作を高速化したい場合などに利用されます。

また、ローカルの変更は無視するという考えなので、git reset --hardを実行するとローカルの変更データがなくなるので要注意です。

Gitの管理から除外する

$ git update-index --assume-unchanged path/to/file

確認方法

git ls-files -v | grep ^h
  • assume-unchangedhで表示されます。

Gitの管理下に戻す

git update-index --no-assume-unchanged path/to/file

参考

by @nishina555

nishina555
Webデベロッパーです。現在は業務委託で仕事をしています。サーバーサイドがメイン。Rails/React/Redux/Node/GraphQL/AWS。大学院時代は自然言語処理の研究を行っていました。
https://nishinatoshiharu.com/
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