Xcodeを使用したGitバージョン管理の操作方法
MacOS Sonoma 14.4.1
Xcode 15.3
XcodeにはGitなどを用いてバージョン管理ができる仕組みが提供されていますが、使い方が分かりにくい点がいくつかあります。
ですのでXcodeを使ったバージョン管理について、Gitコマンドと対応させつつまとめていきたいと思います。
GitHubとのやりとりも出てくるので、XcodeにGitHubアカウントの登録が済んでいない方は、こちらの記事を参考にして先に登録してしまいましょう。
このようなコードブロック内は対応するGitコマンドを記載しています。
リモートリポジトリ名はoriginとしています。
バージョン管理下に置く方法
まずはXcodeでプロジェクトをバージョン管理下に置く方法を説明します。
ここでは自分のプロジェクトを新規に作成する場合と、リモートからクローンしてくる2パターンを挙げます。
自分のプロジェクトを新規、または途中から管理
プロジェクトを作成する時から管理する場合
Xcodeを起動したらCreate New Project…から新規プロジェクトを作成します。
その時、プロジェクト作成ディレクトリ選択画面でCreate Git repository on my Macのチェックボックスにチェックを入れることで管理下に置くことができます。
プロジェクト途中から管理する場合
管理下に置きたいプロジェクトを開いた状態で、メニューバーのアプリメニューIntegrate > New Git repository…を選択し、Create。
git init
ナビゲーターエリアのソースコントロールナビからRepositoriesを選択、一番下のRemotesを右クリックしNew”プロジェクト名”Remote…を選択します。
出てきた画面で必要に応じて内容を変更しCreateすることで、新しくこのプロジェクトのリモートリポジトリが作成されます。
// Githubでリモートリポジトリを作成してから
git remote add origin REMOTE-URL
Remotesのプルダウンに、先ほど設定したRemote Name(origin)が追加されていればうまく設定できています。
git remote -v
リモートリポジトリからクローン
GitHubでフォークしたり、過去のSwiftプロジェクトリポジトリ等を用意しておきます。
新しく作成された何もファイルがないリポジトリはクローンできますが開くことは出来ないのでご注意ください。
Xcodeを起動したらClone Git Repository…を選択します。
GitHub上のリポジトリが一覧表示されるので、クローンしたいリポジトリを指定しCloneをクリックし、保存先を選択します。
git clone REMOTE-URL
XcodeでのGitコマンド操作
ここでから基本的な操作方法を順に見ていきます。
ブランチの作成
ブランチの作成はソースコントロールナビからBranchs > mainを右クリックしたメニューからNew Branch from “ブランチ名”…を選択し、ブランチ名を入力して作成します。
ブランチを作成するだけでなく、HEADは新規作成されたブランチに移動しています。
git checkout -b BRANCH名
ブランチの移動
ブランチを移動したい時はメインエリア上部のプロジェクト名をクリックし、移動したいブランチ名を選択するとスイッチするか確認されるのでスイッチします。
XcodeではHEADの移動はcheckoutではなくSwitchと呼ぶようです。ブランチではなく特定のコミットに移動したいときは、コミット履歴を右クリックしSwich to “ハッシュ値”…を選択すれば移動できます。
git checkout ブランチ名またはハッシュ値
コミットする
内容を変更していくと、プロジェクトナビのファイル名の右側に色々なアイコンが表示されますが、これは変更(Modified)や追加(Add)した上で、コミットしていないことを表しています。ですのでコミットする、もしくは変更前の状態に戻すことで表示は消えます。
この状態でソースコントロールナビのChangesを見るとUncommitted Changesという部分に変更されたファイルが一覧で表示されており、メインエリアではそれぞれのファイルの変更の差分も確認できます。
ワークツリーの内容をステージングエリアに追加するには、すべて追加する場合は画面右のStage Allを選択します。
個別に追加したい場合はMのアイコンをクリックして表示されるStge Changesを一つ一つ選択します。
git add ファイル名
取り消す場合は、同じボタンがStageからUnstageに変わっているので、それを選択すればステージングエリアから取り除くことが出来ます。
git restore --staged ファイル名
続いてコミットを行う方法ですが、コミットメッセージを記入する部分にメッセージを記入してからCommitボタンでコミットすることができます。
git commit -m "コミットメッセージ"
マージする
まず、新しいコミットを追加したいブランチ(枝分かれが一つだけであればmainブランチ)にスイッチしてから、取り込みたいブランチ名を右クリックしMarge “取り込みたいブランチ名” into “コミットを追加したいブランチ名”を選択します。
git merge 取り込み先ブランチ名
コンフリクトが発生した場合は以下の画面になるので解消してからMergeを選択します。
ブランチを削除する
マージして不要になったブランチを削除するにはソースコントロールナビのブランチ名を右クリックしてDelete…を選択するだけです。
ちなみに、このDeleteはマージされていないコミットがあるブランチに対しても行えるので注意してください。
git branch -D ブランチ名
プッシュする
ローカルリポジトリの内容をリモートリポジトリに反映させるにはアプリメニューIntegrate > Push…を選択しプッシュするブランチを指定してプッシュします。
Xcode上で操作してたらあまり意味ないですが、一応上流ブランチに設定してくれるようです。
git push -u origin ローカルブランチ名:リモートブランチ名
プルする
リモートリポジトリの内容をローカルリポジトリに反映させるにはプルを行いますが、プッシュの操作と全く一緒です。
アプリメニューIntegrate > Pull…を選択しプルするブランチを指定します。
git pull origin ブランチ名
おわりに
一通り紹介しましたが、Xcodeでは一つのGitコマンドに対して多くの操作方法が用意されているので、自分にあったものを探していくのもいいかと思います。
コマンド操作に慣れていると逆に使いづらく感じるところもあるかもしれませんが、コマンドよりも簡単に操作が行えるものも多いので、Xcode上でのGit操作も使えるようになるとより作業がはかどるかと思います。