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
以上
コメントを残す