Xcode4でアプリのバージョン管理

アプリをAppleに申請してひと段落したら、アプリを機能アップするアイデアが浮かんできました。早速、やってみようと思ってXcodeを立ち上げた時にふと気付きました。今のソースコードはそのまま取っておかないと、Appleへの申請が通らなかった時や、バグが出た時にわけが分からなくなりそうです。プロジェクトのフォルダをそのままコピーして保存しておけば簡単ですが、折角なので、iTunes Uの講座でちらっとその存在だけが紹介されて気になっていた git というツールでソースコード管理をやってみることにしました。 試しに新規プロジェクトを作ってやってみたので、最初に新規プロジェクト作成時からgit管理するやり方、次にgit管理していなかった既存プロジェクトを後からgit管理する方法を説明します。

プロジェクトを作成する時に指定

プロジェクトの保存場所を指定する時に、”Create local git repository for this project” のチェックボックにチェックを入れます。   ソースファイルの右に、”M” マークがついているのは変更の内容が git に登録されていないことを示しています。

変更を登録

ソースの変更内容を登録するには、右クリックして、Source Control > Commit Selected Files…を選択します。

変更を取消

いろいろと変更したソースファイルをやっぱり元に戻したいと思った時に、このgit管理が大活躍します。元に戻したいファイルを右クリックして、Source Control > Discard Changes…を選択します。 これで最後に登録した内容に戻ります。試しでソースコードを変更した時なんかに便利そうです。

複数のファイルの変更を一括登録

同じ目的で変更した複数のファイルの変更内容を一括して登録するには、XcodeのメニューからSource Control > Commit…を選んで、コメントを入力してcommitします。

アプリをバージョン管理

OrganizerのRepositoriesでbranchを作成して、作成したブランチにSwitchします。 いろいろとソースファイルを変更したけど、やっぱり新しく作成したバージョンがいらなくなったら、masterブランチにswitchして、この画面で不要になったバージョンを選択して”Remove branch”ボタンを押します。 一部だけ変更を採用したい場合は、採用したいファイルを選択して、XcodeのメニューからSource Control > Merge…を選択します。

既存のプロジェクトをgit管理する方法

Xcodeを終了させて、ターミナルで操作します。

1. プロジェクトのディレクトリに移動

$ cd ~/開発/プロジェクト名

2. 管理対象外にするファイルを確認して除外指定

Xcodeのユーザインターフェイスの状態を管理しているファイルは不要なので、そのファイルを特定します。

$ find .
./PasteShogiban.xcodeproj/project.xcworkspace
./PasteShogiban.xcodeproj/project.xcworkspace/contents.xcworkspacedata
./PasteShogiban.xcodeproj/project.xcworkspace/xcuserdata
./PasteShogiban.xcodeproj/project.xcworkspace/xcuserdata/tak.xcuserdatad
./PasteShogiban.xcodeproj/project.xcworkspace/xcuserdata/tak.xcuserdatad/UserInterfaceState.xcuserstate

UserInterfaceState.xcuserstate がそれです。 そのファイルを除外するようにします。

$ echo PasteShogiban.xcodeproj/〜省略〜/UserInterfaceState.xcuserstate > .gitignore

3. gitコマンドを実行

$ git init     # そこに .git サブディレクトリが作成される
$ git add .    # ここに 全てのファイルがコピーされる
$ git commit -m "Initial commit"    # コメントをつけてコミット

関連記事