Swift

Xcodeを使用したGitバージョン管理の操作方法

海洋
利用環境

MacOS Sonoma 14.4.1
Xcode 15.3

XcodeにはGitなどを用いてバージョン管理ができる仕組みが提供されていますが、使い方が分かりにくい点がいくつかあります。
ですのでXcodeを使ったバージョン管理について、Gitコマンドと対応させつつまとめていきたいと思います。

GitHubとのやりとりも出てくるので、XcodeにGitHubアカウントの登録が済んでいない方は、こちらの記事を参考にして先に登録してしまいましょう。

最初に読みたい
Xcodeに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でクローンしたいリポジトリを用意する

GitHubでフォークしたり、過去のSwiftプロジェクトリポジトリ等を用意しておきます。
新しく作成された何もファイルがないリポジトリはクローンできますが開くことは出来ないのでご注意ください。

Xcodeでクローンする

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 "コミットメッセージ"

マージする

まず取り込み元のブランチにスイッチしてから、取り込み先のブランチ名を右クリックしMarge “取り込み先ブランチ” into “取り込み元ブランチ”を選択します。

git merge 取り込み先ブランチ名

コンフリクトが発生した場合は以下の画面になるので解消してからMergeを選択します。

ブランチを削除する

マージして不要になったブランチを削除するにはソースコントロールナビのブランチ名を右クリックしてDelete…を選択するだけです。
ちなみに、このDeleteはマージされていないコミットがあるブランチに対しても行えるので注意してください。

git branch -D ブランチ名

プッシュする

ローカルリポジトリの内容をリモートリポジトリに反映させるにはアプリメニューIntegrate > Push…を選択しプッシュするブランチを指定してプッシュします。
Xcode上で操作してたらあまり意味ないですが、一応上流ブランチに設定してくれるようです。

git push -u origin ローカルブランチ名:リモートブランチ名

プルする

リモートリポジトリの内容をローカルリポジトリに反映させるにはプルを行いますが、プッシュの操作と全く一緒です。
アプリメニューIntegrate > Pull…を選択しプルするブランチを指定します。

git pull origin ブランチ名

おわりに

ここまでよく使用する基本的なGit操作を紹介しましたが、他にもまだまだできることはあります。
コマンドに慣れていると逆に使いづらく感じるところもあるかもしれませんが、コマンドよりも簡単に操作が行えるものも多いので、Xcode上でのGit操作も使えるようになると、より作業がはかどるかと思います。

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはreCAPTCHAによって保護されており、Googleプライバシーポリシー利用規約 が適用されます。

ABOUT ME
海洋
海洋
Linuxを独学中。Swiftもちょっとだけ。
情報処理技術者試験も合わせて勉強中。現在はIP・SGに合格。
勉強中の内容を掲載しておりますので、間違いも有るかと思います。
その点をご理解いただき、お気づきのさいはご連絡いただけると幸いです。
記事URLをコピーしました