Swift

UserInterfaceState.xcuserstateの変更を無視する

iOS開発でプロジェクトを作成しているとgitで確認できる変更差分に鬱陶しいぐらいにUserInterfaceState.xcuserstateの変更分が出現します。

こんなかんじ

ブランチ移動しようとしたときとかコレのせいで阻まれることがしょっちゅうあって、毎回イラッとします。

gitignoreの設定

このファイルはとくにアプリの機能には関係ないものなのでgitignoreに設定してしまいましょう。
gitignoreとは、gitの管理下におかないファイルを設定することができて、ここで設定したファイルは変更したとしても反映されなくなります。

.gitignoreファイルを作成するのは.gitファイルがある階層です。
.gitファイルはlsしただけでは見れないのでls -laコマンドで確認できます。

% ls -la                                                                                                                                                                                                                            
  [1:59:42]
  total 24
  drwxr-xr-x   9 fukatsuyuuki  staff   306 Sep 27 17:35 .
  drwxr-xr-x@ 97 fukatsuyuuki  staff  3298 Sep 28 01:38 ..
  -rw-r--r--@  1 fukatsuyuuki  staff  6148 Sep 28 01:59 .DS_Store
  drwxr-xr-x  13 fukatsuyuuki  staff   442 Sep 28 01:59 .git
  -rw-r--r--   1 fukatsuyuuki  staff    12 Jul 19 14:05 README.md
  drwxr-xr-x  10 fukatsuyuuki  staff   340 Sep 28 01:59 SampleApp
  drwxr-xr-x@  5 fukatsuyuuki  staff   170 Sep 28 01:59 SampleApp.xcodeproj
  drwxr-xr-x   4 fukatsuyuuki  staff   136 Jul 19 14:05 SampleAppTests
  drwxr-xr-x   4 fukatsuyuuki  staff   136 Jul 19 14:05 SampleAppUITests

このようになります。

この階層で.gitignoreファイルを作成します。

vi .gitignore

内容はとりあえずこの1行だけで大丈夫です。

UserInterfaceState.xcuserstate

これでコミットしてプッシュしましょう。

既にgitの管理下にファイルがある場合

多くの場合で既にgitの管理下にUserInterfaceState.xcuserstateがあると思うのでgitignoreに設定するだけではなく既に管理下に入ってるものを管理下からはずすことをしないといけません。

その場合は、

git rm --cached (プロジェクト名).xcodeproj/project.xcworkspace/xcuserdata/(アカウント名).xcuserdatad/UserInterfaceState.xcuserstate

でできます。