Xcodeを使用したGitバージョン管理の操作方法
macOS Tahoe 26.6.2
Xcode 27.0
XcodeにはGitなどを用いてバージョン管理ができる仕組みが提供されていますが、使い方が分かりにくい点がいくつかあります。
ですのでXcodeを使ったバージョン管理について、Gitコマンドと対応させつつまとめていきたいと思います。
GitHubとのやりとりも出てくるので、XcodeにGitHubアカウントの登録が済んでいない方は、こちらの記事を参考にして先に登録してしまいましょう。
このようなコードブロック内は対応するGitコマンドを記載しています。
リモートリポジトリ名はoriginとしています。Plaintextバージョン管理下に置く方法
まずはXcodeでプロジェクトをバージョン管理下に置く方法を説明します。
ここでは自分のプロジェクトを新規に作成する場合と、リモートからクローンしてくる2パターンを挙げます。
自分のプロジェクトを新規、または途中から管理
プロジェクト開始時から管理する場合
Xcodeを起動したら新規プロジェクトを開始し、cmd + sで保存します。その時、Create Git repository on my Macのチェックボックスにチェックを入れて保存することで管理下に置くことができます。

プロジェクト途中から管理する場合
管理下に置きたいプロジェクトを開いた状態で、メニューバーのアプリメニューIntegrate > New Git Repository…を選択し、Create。

git initZshナビゲーターエリアのソースコントロールナビからRepositoriesを選択、一番下のRemotesを右クリックしNew “プロジェクト名” Remote…を選択します。

出てきた画面で必要に応じて内容を変更しCreateすることで、新しくこのプロジェクトのリモートリポジトリが作成されます。

# GitHubでリモートリポジトリを作成してから
git remote add origin REMOTE-URLZshRemotesのプルダウンに、先ほど設定したRemote Name(origin)が追加されていればうまく設定できています。

git remote -vZshリモートリポジトリからクローン
Swiftプロジェクトのリモートリポジトリを用意しておきます。
新しく作成された何もファイルがないリポジトリはクローンできますが開くことはできないのでご注意ください。
IntegrateからClone…を選択、もしくはスタートメニューのClone…を選択します。
GitHub上のリポジトリが一覧表示されるので、クローンしたいリポジトリを指定しCloneをクリックし、保存先を選択します。


git clone REMOTE-URLZshXcodeでのGitコマンド操作
ここから基本的な操作方法を順に見ていきます。
ブランチの作成
ブランチの作成はソースコントロールナビからBranches > mainを右クリックしたメニューからNew Branch from “ブランチ名”…を選択し、ブランチ名を入力して作成します。
ブランチを作成するだけでなく、HEADも新しいブランチに移動します。

git checkout -b BRANCH名Zshブランチの移動
ブランチを移動したい時はソースコントロールナビからBranches > 移動先ブランチ名を右クリックしたメニューからSwitch to “ブランチ名”…を選択するとスイッチするか確認されるのでスイッチします。

XcodeではHEADの移動はcheckoutではなくSwitchと呼ぶようです。ブランチではなく特定のコミットに移動したいときは、コミット履歴を右クリックしSwitch to “ハッシュ値”…を選択すれば移動できます。
git checkout ブランチ名またはハッシュ値Zshコミットする
内容を変更していくと、プロジェクトナビのファイル名の右側に色々なアイコンが表示されますが、これは変更(Modified)や追加(Add)した上で、コミットしていないことを表しています。ですのでコミットする、もしくは変更前の状態に戻すことで表示は消えます。
この状態でソースコントロールナビのChangesを見るとUncommitted Changesという部分に変更されたファイルが一覧で表示されており、メインエリアではそれぞれのファイルの変更の差分も確認できます。

ワークツリーの内容をステージングエリアに追加するには、すべて追加する場合は画面右のStage Allを選択します。
個別に追加したい場合はそれぞれのファイルの右上、Mのアイコンをクリックして表示されるStage Changesを一つ一つ選択します。

git add ファイル名Zsh取り消す場合は、同じボタンがStageからUnstageに変わっているので、それを選択すればステージングエリアから取り除くことができます。

git restore --staged ファイル名Zsh続いてコミットを行う方法ですが、コミットメッセージを記入する部分にメッセージを記入してからCommitボタンでコミットすることができます。

git commit -m "コミットメッセージ"Zshマージする
まず、新しいコミットを追加したいブランチ(枝分かれが一つだけであればmainブランチ)にスイッチしてから、取り込みたいブランチ名を右クリックしMerge “取り込みたいブランチ名” into “コミットを追加したいブランチ名”を選択します。

git merge 取り込みたいブランチ名Zshコンフリクトが発生した場合は以下の画面になるので解消してからMergeを選択します。

ブランチを削除する
マージして不要になったブランチを削除するにはソースコントロールナビのブランチ名を右クリックしてDelete…を選択するだけです。
ちなみに、このDeleteはマージされていないコミットがあるブランチに対しても行えるので注意してください。
git branch -D ブランチ名Zshプッシュする
ローカルリポジトリの内容をリモートリポジトリに反映させるにはソースコントロールナビのChangesからCommitを選択し右上のPush…からプッシュするブランチを指定してプッシュします。
Xcode上で操作していたらあまり意味ないですが、一応上流ブランチに設定してくれるようです。

git push -u origin <ローカルブランチ名>:<リモートブランチ名>Zshプルする
リモートリポジトリの内容をローカルリポジトリに反映させるにはプルを行います。
アプリメニューIntegrate > Pull…を選択しプルするブランチを指定すればOKです。
git pull origin ブランチ名Zshおわりに
一通り紹介しましたが、Xcodeでは一つのGitコマンドに対して多くの操作方法が用意されています。ブランチ操作を除けば、基本的にアプリメニューのIntegrateにまとまっているので、わからなければまずここを見るのがいいと思います。
コマンド操作に慣れていると逆に使いづらく感じるところもあるかもしれませんが、コマンドよりも簡単に操作が行えるものも多いので、Xcode上でのGit操作も使えるようになるとより作業がはかどるかと思います。