XcodeでGitを使おう 【リモートリポジトリ編】
Gitはプログラムのソースコードの変更履歴を追跡して管理することのできるシステムです。Gitを使用することで、多くのユーザーとの共同開発や、バージョン管理などを簡単に行うことができます。今回は、XcodeでGitを使用する方法について詳しく解説したいと思います。
前回の記事では、XcodeでローカルGitリポジトリを使用する方法について詳しく解説しました。今回は、リモートリポジトリをXcodeから操作していきます。
リモートリポジトリとは
前回の記事で紹介した通り、Gitのリポジトリにはローカルリポジトリとリモートリポジトリの二種類存在します。リモートリポジトリは、GitHubやGitLabなどのサーバー上に存在します。リモートリポジトリは、プロジェクトのファイル全体の管理に使用され、他のプロジェクトメンバーとの共同作業などに使用されます。
リモートリポジトリとローカルリポジトリの役割の違いについて次の表でまとめてみます。
| 種類 | 存在する場所 | 役割 |
| ローカルリポジトリ | 自分のPC内 | 自分の作業内容をコミットしたり、試行錯誤したりする場所 |
| リモートリポジトリ | サーバー上(GitHubなど) | メンバー全員の変更を集約し、最新のコードを保管する場所 |
リモートリポジトリには、一般的にGitHubやGitLab、Bitbucketなどのクラウドサービスを使用しますが、自分でリモートリポジトリを作成することも可能です。
よく使用されるGitプラットフォーム
よく使用されるプラットフォームには、以下のようなものがあります。
GitHub

GitLab

Bitbucket

Azure Repos
様々なサービスがありますが、今回はGitHubを例に説明します。
GitHubでリポジトリを作成する
まず、GitHubでリポジトリを作るためにはアカウントが必要になります。無料で作ることができます。
から必要事項を記入してアカウントを作成しましょう。
アカウントが作成できたら、右上の自分のアカウントアイコンをクリックして、Repositoriesを押しましょう。

自分の持っているリポジトリ一覧が表示されるので、右上のNewボタンを押して新規作成します。

すると、次のような画面が表示されます。

まず、Repository nameに好きな名前を入れましょう。リポジトリ名にはASCII文字、数字、.-_のみを含めることができます。日本語で入力した場合、その部分は-に変換されます。

リポジトリ名はリポジトリページにアクセスする際のURLにもなります。(この場合はhttps://github.com/raspiblog/Sourcecodes)
次に、Descriptionは、画面右上のAboutに表示される文字列です。リポジトリの説明文を書いたりします。必須ではないので空白のままでも大丈夫です。
次に、Choose Visibilityです。

PublicとPrivateから選ぶことができ、Publicの場合は全ユーザーが閲覧することができ、Privateの場合は自分や招待した人のみしか閲覧することができません。今回はPrivateで作成してみたいと思います。
Githubの無料プランの場合、PrivateリポジトリだとPublicリポジトリに比べ機能がいくつか制限されていますが、Gitの基本機能は問題なく使うことができます。
.gitignoreは、gitが変更履歴を追跡しないファイルを指定できるコンフィグファイルです。コードは変更を管理したいけどしょっちゅう変わるビルド生成物は無視したいなどと言ったときに活用することができます。

このような設定でリポジトリを作成してみます。
右下のCreate repositoryをクリックすればリポジトリが作成され、リポジトリページに移動します。

これでGitHubでリモートリポジトリを作成することができました!
Xcodeでリモートリポジトリを追加する
それでは、Xcode側でリモートリポジトリをいじれるように設定していきましょう。
XcodeでGitHubにログインする
まず、Xcodeで先ほど作成したGitHubのアカウントにログインする必要があります。
ここで、GitHubのアカウントにログインするにはユーザー名とパスワードではなく、GitHubで発行できるトークンというものを使用します。トークンを使用することで、アクセス権限を詳しく管理することができます。
まず、GitHubのウェブサイトで、右上のアカウントアイコンをクリックし、Settingsを開きます。次に、サイドバーの一番下にあるDevelopoer settingsをクリックしましょう。

その後、Personal access tokensから、Generate new token(classic)をクリックします。

そうすると、次のような画面が表示されます。

Noteにわかりやすいようにトークンの使用目的を書いておきましょう。その後、select scopesからrepo,admin:public_key,userにチェックを入れましょう。
それが終わったら、一番したにあるGenerate tokenをクリックします。
すると、トークンが生成されます。

このトークンを安全な場所に保管しておきましょう。
トークンはここでしか表示されず、これ以降見ることはできません。忘れないように、必ず安全な場所に書いて保管しておきましょう。わからなくなってしまった場合はこのトークンを削除して新しく作り直しましょう。
次に、Xcodeに移動し、Settingsを開きます。その後、サイドバーからSource Controlをクリックしましょう。

次に、AccountsからAdd Account…をクリックして、GitHubを選択します。

アカウントとトークンを入力する画面が表示されるので、先ほどのトークンとアカウント名を入力します。

Sign Inをクリックして、ログインを完了させます。
ログインができると、先ほどのAccountsのリストに自分のGitHubアカウントが表示されます。この状態になれば、リモートリポジトリを扱うことができるようになります。
Xcodeに既存のリモートリポジトリを追加する
それでは、先ほど作成したリモートリポジトリをXcodeに追加してみましょう。
まず、ナビゲーターウィンドウからSource Controlを選択し、一番下にあるRemotesを右クリックします。

次に、Add Existing Remote…をクリックします。

すると、このような画面になるため、先ほどのリモートリポジトリのURLを入力します。
https://github.com/ユーザー名/リポジトリ名.gitというような形式で入力します。

入力ができたら、右下のAddボタンを押して追加しましょう。

すると、Remotesにoriginが追加されました。これでXcode上から先ほどのリモートリポジトリを操ることができるようになります。
Xcodeから新しいリモートリポジトリを作成する
先ほどは先にGitHubでリモートリポジトリを作成し、それをXcodeに追加しましたが、Xcode上でリモートリポジトリを作成することもできます。
ナビゲーターウィンドウからRemotesを右クリックし、New “プロジェクト名” remote…をクリックします。

すると、次のような画面が表示されるため、必要事項を記入してCreateをクリックします。
そうすると、自動的にGitHub上にリポジトリが作成され、Xcode上で操作できるようになります。
リモートリポジトリをfetchする
まず、リモートリポジトリの変更履歴を取得しましょう。

ツールバーからIntegrateを選択し、Fetch Changesをクリックするとfetchが完了します。この時点ではリモートリポジトリの変更がローカルリポジトリのコードに直接影響するわけではなく、あくまでリモートの変更履歴が同期されるだけになります。
リモートリポジトリをPullする
次に、リモートリポジトリの変更内容を、実際にローカルリポジトリに適用します。

ツールバーからIntegrateを選択し、Pull…を選択します。

Pullするブランチを選択してPullを行うと、このブランチの変更が自分のローカルリポジトリにマージされます。
リモートリポジトリにPushする
それでは、ローカルリポジトリの変更を、リモートリポジトリにPushしてみましょう。Pushではリモートリポジトリにローカルリポジトリの変更履歴をアップロードして同期します。

ツールバーのIntegrateからPush…をクリックします。

プッシュする対象のブランチを選択します。
その後、Pushボタンを押してPushを行います。

このようなエラーが表示された場合、Pushよりも先にfetchとPullを行なってください。

そうすると、コミット履歴に、origin/mainとmainの二つのバッジが表示されます。
これはorigin/mainはリモートのコミット履歴の先頭になります。現在はリモートとローカル両方が同じコミットまで同期していることがわかります。
Pull Requestをしよう
次にPull Requestを行ってみましょう。

例えば、PR-testとmainブランチが存在し、PR-testをmainにマージしたいという場面を想定します。
一人で開発を行なっている場合にはただ単純にマージしてもいいかもしれませんが、複数人で作業をしていたりする場合、個人が好き勝手に新機能などのブランチをメインにマージしてしまうと大変なことになってしまいます。
そうならないように、GitHubなどのツールでは、Pull Requestという機能が用意されています。この機能は、ブランチをマージしたい場合に直接するのではなく、Pull Requestというリクエストを作成します。マージを行いたい人は、そのマージを行いたい理由などをPull Requestに書き込みます。
そのリクエストを別の人が読み、コードレビューを行い承認が得られて初めてマージをすることができるようになります。このような仕組みを使うことで、より安全性やクオリティの高いコードを書きシステムを作ることができるようになります。
Xcodeでは、ツールバーからIntegrateを選択し、Create Pull Request…をクリックすることでPull Requestを作成することができます。

クリックすると、自動でGitHubのページにジャンプし、ブランチ間の変更点が表示されます。右上のCreate pull requestをクリックしましょう。

すると、Open a pull requstという画面に遷移するため、ここに必要事項を記入し、右下のCreate pull requestをクリックして、Pull Requestを作成します。

まとめ
前回と今回でXcodeでのGitの使用方法について解説しました。
Gitはファイル変更履歴追跡システムとして、さらに共同開発においてなくてはならない非常に重要な存在となっています。Gitを有意義に活用できるようになりたいですね。
お疲れ様でした。
前回の記事で、Xcodeでローカルリポジトリを使用する方法について詳しく解説しています。こちらも併せてご覧ください。
