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 が無効になってしまうようです。大変失礼いたしました。>_<





