# Git SSH との連携

Monacaでは、Git サービスを使ってリポジトリとプロジェクトを SSH 認証で接続することができます。GitHub は、SSH 接続をサポートする Git サービスの 1 つです。 次の項目では、GitHub を例として使用します。

{% hint style="info" %}
ここでは、Public 指定されたリポジトリを対象として解説を進めます。Private 指定のリポジトリに接続する場合には、対応する Monacaプランに加入する必要があります。詳細は、 [料金プラン ](https://ja.monaca.io/pricing.html)をご確認ください。
{% endhint %}

## 事前準備

Monaca クラウド IDE のバージョン管理機能を使用する場合、次のアカウントが必要となります。

* SSH をサポートしている Git サービスのアカウント

## セットアップ

### ステップ 1: SSH キーの生成

1\. [SSHキー管理](https://monaca.mobi/en/ssh) 画面を表示します。

2\. `SSHキー 再生成`ボタンをクリックします。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgzQTGemncQjpU4CNet%2F-MgzQyp9vDC8hqJk8LJw%2Fimage.png?alt=media\&token=e89c6dcc-c001-4654-9d15-61c2285d11e4)

3\. 次の項目 ( [Git サービスに SSH キーを追加する](#suteppu-2-git-sbisuni-ssh-kwosuru) ) で使用するために生成されたキーをコピーします。

### ステップ 2: Git サービスに SSH キーを追加する

Monaca と Git サービスプロバイダ間の正しい認証のために、前の項目で生成された SSH キーを Git サービスアカウントに追加する必要があります。

例では、GitHub を使用しています。 他のサービスについては、Git サービスのドキュメントを参照してください。

1. [SSH Key](https://github.com/settings/keys) 画面を表示します。
2. `New SSH key`ボタンをクリックします。
3. 以下の情報を入力します。
   * `Title`: キーのタイトル
   * `Key`: Monacaアカウントから生成された SSH キー（「1. SSH キーの生成」で作成した SSH キー）
4. `Add SSH key`ボタンをクリックします。

## Monaca プロジェクトを新しい Git リポジトリに接続する

### ステップ 1: 新しい空のリポジトリを作成する

任意の Git サービスで、新しいリポジトリを作成できます。この項目では、次のようにGitHubに新しいリポジトリを作成します。

1. GitHub アカウントに移動し、新しい空のリポジトリを作成します（Readme

   ファイルなし）。
2. `SSH`ボタンを選択します。
3. SSH リンクをコピーします（下記のスクリーンショットを参照）。 次の項目の後半に Monaca クラウド IDE でこのリンクを使用します。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgzQTGemncQjpU4CNet%2F-MgzRLis6obsBxRrtU47%2Fimage.png?alt=media\&token=4783e59f-c573-4cf0-af88-d1c69010b2aa)

### ステップ 2: リポジトリと Monaca プロジェクトの接続

1\. Monaca Dashboard から、リポジトリに接続するプロジェクトを開きます。

2\. Monaca クラウド IDE のメニューから、\*\*`プロジェクト → バージョン管理設定`\*\*を選択します。

3\. `Git SSH` オプションを以下のように選択してください。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgzQTGemncQjpU4CNet%2F-MgzRW2mQtNZ8TM-bqGE%2Fimage.png?alt=media\&token=e4f423e3-79cf-4941-94ad-9619e543e631)

4\. 次に、 `Repository URL` (上記のリンク) と `Committer Name` を入力する必要があります。

{% hint style="info" %}
設定後に別のリポジトリに変更することはできませんのでご注意ください。
{% endhint %}

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgzQTGemncQjpU4CNet%2F-MgzRbdgFVM93MQrsRdh%2Fimage.png?alt=media\&token=318e3291-af58-4dc4-9ba9-b3c3d3cc35f2)

5\. `設定する`ボタンをクリックします。

6\. プロジェクトは新しいリポジトリにアップロードされます。 デフォルトでは、作業ブランチは master として設定されます。 別の作業ブランチに切り替える場合は、\*\*`プロジェクト → バージョン管理設定`\*\*へ移動します。

## プロジェクトを Git リポジトリから Monaca にインポートする

1\. Monaca アカウントを使用して、[Monaca クラウドIDE](https://monaca.mobi/ja/login) にログインします。

2\. ダッシュボード上で、`インポート`を選択します。

3.「Gitのリポジトリ」を選択し、`リポジトリURL` 等の必要な情報を入力し、`プロジェクトのインポート`ボタンをクリックします。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgzQTGemncQjpU4CNet%2F-MgzS1cCnQSENv4Lntbj%2Fimage.png?alt=media\&token=1f971eb2-dc92-43b4-971a-3a7b08d52ca7)

4\. インポートの完了後、Monaca ダッシュボード上で対象のプロジェクトが表示されていることを確認します。デフォルトでは、master ブランチのコンテンツがインポート対象となります。ブランチは、\*\*`プロジェクト → バージョン管理設定`\*\*で切り替えることができます。

## リモートリポジトリを使用した作業

リポジトリとプロジェクト間の接続完了後は、チームメンバーと同じプロジェクトで作業を開始し、Monaca クラウド IDE から最新のアップデートと同期させることができます。

Monaca クラウド IDE では、ユーザーフレンドリーなバージョン管理用のインターフェイスを提供しています。このインターフェイスを使用すれば、Git のコマンドの詳細を意識せずに、基本的な操作を一通り行うことができます。

### ブランチの切り替え ( Git コマンドの checkout )

複数のブランチを使用したプロジェクトで、ブランチの切り替えを行う場合は、次の手順に従います。

1\. Monaca クラウド IDE のメニューから、\*\*`プロジェクト → バージョン管理設定`\*\*を選択します。

2\. 現在の作業ブランチから切り替えたいブランチを選択し、 `アップデート`ボタンをクリックします。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgzQTGemncQjpU4CNet%2F-MgzSIWr8yNvCqvaQhe7%2Fimage.png?alt=media\&token=56e7b1af-5e0d-4dcb-b05a-d36698253eb0)

{% hint style="info" %}
現在のブランチで行った変更をコミットせずに、ブランチの切り替えを行う場合、エラーが表示されます。ブランチを切り替える場合には、最初に、作業内容をコミット ( 場合によっては、リモートにプッシュまで ) してください。
{% endhint %}

### リモートリポジトリから最新の内容を取得

Git コマンドでは、リモートリポジトリから最新の情報を取得/ダウンロードする場合、`git pull` ( git プル ) コマンドを使用します。Monaca クラウド IDE では、リモートリポジトリから最新の情報を取得する場合、Monaca クラウド IDE のメニューから、**`プロジェクト → プル`** を選択します。リモートリポジトリ側の内容が更新されている場合、その内容がダウンロードされ、対応するブランチ側に反映されます。

{% hint style="info" %}
IDE 上でプロジェクトを作成した場合、開発者側が自由に作業できるファイルのほとんどは、`www` フォルダー内に置かれています。これ以外にも、IDE 上には表示されないシステム側のファイルもありますが、リモートリポジトリとの同期時には、これらのファイルも一緒にアップロード・ダウンロードされています。
{% endhint %}

### 変更箇所のコミットとリモートリポジトリへの反映

現在作業をしているブランチで行った変更を、リモートリポジトリ側に反映させます。最初に、次の手順に従い、コミットを行い、リモートリポジトリ側へプッシュします ( コミット前に、ファイルを保存する必要があります )。

1. Monaca クラウド IDE のメニューから、\*\*`プロジェクト → コミット`\*\*を選択します。
2. コミットメッセージを入力して、コミット対象のファイルにチェックを入れます。次に、 `コミット`ボタンをクリックします。
3. ここまでの手順で、リモートリポジトリに更新を反映させる準備ができました。次に、 \*\*`プロジェクト → プッシュ`\*\*を選択します。コミット後、リモートリポジトリ側が更新されているか確認します。

### リモートリポジトリ側のコミット履歴の表示 ( GitHub 側の履歴ページ )

{% hint style="info" %}
選択可能な公開 Git サービスとプライベート Git サービスが多数存在するため、リモートコミット履歴の URL は、すべてのサービスで認識されません。このオプションは、SSH リポジトリにリンクされたプロジェクトでは使用できません。
{% endhint %}

リモートリポジトリ側 ( GitHub 側 ) のコミット履歴を確認する場合、\*\*`プロジェクト → リモートのコミット履歴`\*\*を選択します。現在作業しているブランチのコミット履歴が表示された、GitHub 側のサイト ( 外部ページ ) にリダイレクトされます。

### ローカルコミットの履歴表示 ( Monaca クラウド IDE 側の履歴ページ )

ローカルコミットとは、Monaca クラウド IDE 上で行ったコミットを指します。\*\*`プロジェクト → コミット履歴`\*\*を選択すれば、ローカルコミットの履歴を表示できます。各コミットの内容を確認する場合には、コミットメッセージ横の ID をクリックします。
