サトリク
どうもサトリクです。
iOSアプリ開発(Xcode)でGitを使っていると、何も変更していないのに、git diffしたときに差分が出てしまう現象を解消する方法をご紹介します。
無駄な差分「UserInterfaceState.xcuserstate」と「xcdebugger/Breakpoints_v2.xcbkptlist」
まず、開発しているときに出てしまう無駄な差分は2つあります。
「UserInterfaceState.xcuserstate」と「xcdebugger/Breakpoints_v2.xcbkptlist」です。

「UserInterfaceState.xcuserstate」は何?
「UserInterfaceState.xcuserstate」は、.storyboardなどのレイアウトファイルを、オブジェクトそのものではなく、ただ単に見るために拡大・縮小・位置を変更するだけで変更されます。
つまり、これをこうするだけで変更されてしまう。


「xcdebugger/Breakpoints_v2.xcbkptlist」は何?
これはブレークポイントを変更したときに、差分が出てしまいます。

Gitで無視する方法
では、先ほど解説した2つのファイルを無視する。差分に出さないようにする方法を解説していきます。
どうやるかというと、gitの差分に出ないように、gitに設定を加えます。
手順は簡単で
- .gitignoreファイル作成
- 書き込み
- キャッシュ削除
- コミット
だけです。
では丁寧に解説していきます。
まずは、cdコマンドでプロジェクトにいき、コミットしてまっさらな状態にしておきましょう。
git add .
git commit -m "一旦コミット"
以下のように、git statusと打って何も変更ないことを確認しましょう。今回該当の差分があってもOK

一回、storyboardを適当にいじって、ViewControllerで適当な場所にブレークポイントを置いて
もう一度git statusで確認してみましょう。

そうすると、以下のように、UserInterfaceStateとBreakpointsの差分が現れると思います。
modified: AchievementHabit.xcworkspace/xcuserdata/rikutosato.xcuserdatad/UserInterfaceState.xcuserstate modified: AchievementHabit.xcworkspace/xcuserdata/rikutosato.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
以下のコマンドを打ってください。
touch .gitignore

これで、.gitignoreというファイルが作成されました。
以下のコマンドを入力して.gitignoreがあることを確認しましょう。
ls -a

次に、.gitignoreファイルの中身を書き換えていきます。
以下のコマンドを入力してください。
vi .gitignore

このような状態になるので、iを押してINSERTモードにしましょう。

こうなっていればOK

以下の記述をコピペしてください。
UserInterfaceState.xcuserstate xcdebugger

記述したら、escを押して、:wqと入力してください。これで保存しました。

以下のコマンドを打って書き込めてるか確認しましょう。
cat .gitignore

もう一度git statusで確認します。

キャッシュをクリアします。git rm --cached と打って、1つ目の差分のUseerInterfaceStateのパスを丸々コピペしてください。
git rm --cached AchievementHabit.xcworkspace/xcuserdata/rikutosato.xcuserdatad/UserInterfaceState.xcuserstate

先ほどと同じく、git rm --cached と打って、2つ目の差分のパスをコピペしてください。
git rm --cached AchievementHabit.xcworkspace/xcuserdata/rikutosato.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

一旦いつも通り、コミットしてください。

storyboardを適当にいじって、ViewControllerで適当な場所にブレークポイントを打って、git statusで確認してみましょう。
おそらく差分が表示されないはずです!

お疲れ様でした!
これで、差分が出てこなくなって気持ちよく開発ができるようになりましたね!
まとめ
このgitignoreを使って差分に出さない方法の記事がたくさんあったのですが、どれもわかりづらかったので、わかりやすくまとめました。
今後もわかりにくい記事をこのブログでわかりやすく解説していくので、ブックマーク宜しくお願いします。
他にもXcode、Swift関連の記事を書いています
よかったら他の記事もみてみてください。


