画竜点睛を衝く@mapyo

日々やった事をつらつらと書くブログです

gitで特定のファイルの変更を無視する

Android StudioのPreview版を使っていると、 Instunt runを使うために

Instant Run requires a newer version of the Gradle plugin.

と言われてアップデートしてねと言われてアップデートされる。 けども、まだalpha1とかなので、それはコミットしたくない。

そのまま使いながら開発してると、それがdiffとして出てきてしまうので、そこだけ無視したかった。

参考 http://qiita.com/usamik26/items/56d0d3ba7a1300625f92

設定

git update-index --assume-unchanged build.gradle
git update-index --assume-unchanged app/build.gradle

解除

git update-index --no-assume-unchanged build.gradle
git update-index --no-assume-unchanged app/build.gradle

具体的にどのファイルが更新されるのかは、環境によって違うかもしれない。

現在assume-unchangedなファイルがあるかどうかは以下で確認出来る

git ls-files -v | grep ^h

assume-unchangedとskip-worktreeの違いについて調べてみようとして、 実際にbuild.gradleが更新されるmergeを行ったのだけども、 どちらのケースも同じような以下のメッセージが出たので違いがよくわからなかった。 僕のテスト方法がダメだったのかもしれない。

error: Your local changes to the following files would be overwritten by checkout:
        build.gradle
Please, commit your changes or stash them before you can switch branches.
Aborting

まぁ、参考したqiitaの説明をよむ感じだとassume-unchangedを使っとくのが無難な気がするのでそうしとこうという感じ。

そして、たまにこの設定をしているのを忘れていて、build.gradleを修正したはずなのに、何でgit diffしても変更してない事になっているんだ!!!という事態になる事があるので注意。