【Git】Xcodeの「UserInterfaceState.xcuserstate」ファイルを管理下から除外する

Xcodeプロジェクトをgitで管理し始めた際、UserInterfaceState.xcuserstateなるファイルが毎回commit対象に上がってきて困りました。

modified:   HogeHogeApp/HogeHogeApp.xcodeproj/project.xcworkspace/xcuserdata/username.xcuserdatad/UserInterfaceState.xcuserstate

自動で作られるファイルのようで、特にソースコードを編集しなくても、ちょっとでもXcodeプロジェクト内をクリックするだけでも更新が掛かり、必ず対象に上がってきてしまいます。

UserInterfaceState.xcuserstateに限らず、こういった管理下に置きたくないファイルは「.gitignore」ファイルに記載する必要があります。

.gitignoreにUserInterfaceState.xcuserstateを追加

.gitignoreはgitリポジトリの管理対象外にしたいファイル、またはディレクトリを記載することができるファイルです。

まず、.gitignoreが無ければ作成します。GitHubでリポジトリを作っていると、一緒に作成している場合があるので、その場合は既存のファイルに追記してください。

注意点としては.gitファイルと同じ階層に置く必要があります。

.gitファイルがある階層にいることを確認
$ ls -la
.
..
.DS_Store
.git
HogeHogeApp

.gitignoreを作成します。

$ touch .gitignore
$ ls -la
.
..
.DS_Store
.git
.gitignore
HogeHogeApp

.gitignoreをviで編集します。

$ vi .gitignore

管理対象外にしたいファイル、ディレクトリを記載します。
UserInterfaceState.xcuserstate

以下はついでです。
.DS_Store
*.swp

UserInterfaceState.xcuserstateのキャッシュを削除

続いて、現時点で存在するUserInterfaceState.xcuserstateの変更情報のキャッシュをgitから削除します。

$ git rm --cached HogeHogeApp/HogeHogeApp.xcodeproj/project.xcworkspace/xcuserdata/username.xcuserdatad/UserInterfaceState.xcuserstate

キャッシュクリアをコミットします。

$ git commit -m "UserInterfaceState.xcuserstateキャッシュクリア"

ここまでできたら、Xcodeでアクションを取ったあと、gitのステータスを確認し、コミット対象に上がってこなければ成功です。

$ git status
On branch master
nothing to commit, working tree clean

以上