Gitでファイルを管理しない方法としては.gitignore
や.git/info/exclude
に記述する方法があります。
これらの方法はGitでまだ管理されていない(Untracked)ファイルに対して行うものです。
しかし、既にGitで管理されているファイルをローカルで修正しても無視してもらいたいときがないでしょうか?
例えば、アプリケーションの設定ファイルをローカル用に少しだけ変更するときなど、Gitの管理から除外したいですよね。
今回は既にGitで管理されているファイルをローカルで修正しても無視できるような設定と確認方法について説明します。
方法は2つあります。
- 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-unchanged
はh
で表示されます。
Gitの管理下に戻す
$ git update-index --no-assume-unchanged path/to/file
さいごに
Twitter(@nishina555)やってます。フォローしてもらえるとうれしいです!