2011年 4月 09日(土曜日) 17:11

Xcode 4で既存のXcodeプロジェクトからローカルGitリポジトリを作成するには

評価:
(1 Vote)

Xcode4からは、バージョンコントロールを正式にサポートしていて、SubversionとGitが使えます。ここではGitを使う方法を試してみました。

Xcode3から使っていた既存のXcodeプロジェクトでGitを使ってバージョンコントロールをするときに、AppleのXcode 4 User Guideの"Add Git or Subversion Version Control to an Existing Project"あたりを見ながら素直に従ってやると、Xcodeのプロジェクト関連のファイルやビルドされてできたオブジェクトファイルなどが全部リポジトリに追加されてしまい、後で困ったことになります。(私の場合はUserInterfaceState.xcuserstateというファイルがどうやらXcodeを起動しておくだけで常に書き換えられていくようで、これがリポジトリに入ってしまったために、常にコンフリクトをおこしてmasterブランチにマージできなくなってしまいました。)

こういうことにならないように、既存のXcodeプロジェクトからローカルのGitリポジトリを作成する方法。

0. Gitの初期設定

Gitを最初に使うときは、コミットする前に、次のコマンドで自分の名前とメールアドレスを設定しておくのがよさそう。

% git config --global user.name "Your Name"
% git config --global user.email you@example.com

1. リポジトリの初期化

プロジェクトの一番上のディレクトリに移動して、コマンドラインから、次のコマンド(git init)を実行します。

% git init
Initialized empty Git repository in /path/to/project/dir/.git/

2. .gitignoreファイルを作成

ここがポイントで、プロジェクトの一番上のディレクトリに、.gitignoreというファイルを作成して、次のような内容を書きます。(参考

# hidden/temp files
.DS_Store
*.swp
*~.nib

# Build dir
build/

# Xcode project files except for the project file
*.xcodeproj/*
!*.xcodeproj/project.pbxproj

# Windows image thumbnail file
Thumbs.db

# User-specific project settings
*.mode1v3
*.mode2v3

3. リポジトリにファイルを追加

あとはUser Guideの通りで大丈夫です。次のコマンドで、現在のディレクトリのファイルをリポジトリに追加します。

% git add .

念のため、ここでリポジトリに追加しようとしているファイルに余計なものが含まれてしまっていないかをgit statusコマンドで確認してみます。

% git status

追加しようとしているファイルのリストが表示されます。build/以下など、.gitignoreに書いたファイルが追加されていないことを確認します。

問題なければ、コミットします。

% git commit -m "Initial commit."

(おまけ)リポジトリの作成を最初からやり直したくなったときは…

.gitignoreを作る前にコミットしてしまったりして、困ったことになってしまったら、ソースコードのリリース用のgit archiveコマンドを使って、バージョン管理されていないファイルを取り出すことができます。

% git archive --format=tar --prefix=project/ HEAD | gzip >latest.tar.gz

プロジェクトの一番上のディレクトリでこのコマンドを実行すると、同じディレクトリに、latest.tar.gzが作成され、この中にprojectというディレクトリが作られていて、その下にプロジェクト内のファイルが納められています。これをプロジェクトのディレクトリと置き換えて、Gitリポジトリの作成をはじめからやり直すことができます。




訂正 2011/10/12:.gitignoreファイルの*.xcodeproj/のところは*.xcodeproj/*の間違いでした。最後の*がないと、.xcodeprojディレクトリごと無視されてしまい、次の行の !*.xcodeproj/project.pbxproj が無効になってしまうようです。大変失礼いたしました。>_<

最終更新日: 2011年 10月 12日(水曜日) 15:57
くらち たかよし

くらち たかよし

モバイル・Webアプリ作家。最近は主にiPhoneアプリ制作を手がける。企画から、UIデザイン、設計、実装、テスト、多言語対応、ユーザーサポートまでを1人〜数人の個人で行う全人的開発手法の確立を目指している。

使う言語はObjective-C, C++, C#, Java, PHPなど。Web関連で使うものはCakePHP, MySQL, Joomla! CMSなど。デザインはシロウトながらPhotoshopとIllustratorをなんとかがんばって使う。

場所や時間に縛られない、インターネット時代の新しい働き方、自由な生き方を模索中。海外移住、低予算&低リスク起業、キャリアデザイン、心理学などにも興味あり。

Web: awaresoft.jp/