システム開発においてバージョン管理の存在はなくてはならないものです。それはスマートフォンアプリ開発においても変わりません。かつてはSubversion等が主流でしたが、現在ではGitが最もスタンダードなバージョン管理システムになっています。Monacaでもバージョン管理機能としてGit/GitHubが利用できるようになっています。ただし、以前までのクラウドIDEではあくまでも簡易的な(Push/Pull)機能しか利用できませんでした。

先日、クラウドIDEに ターミナル機能 が追加されたことで、各種Gitコマンドが打てるようになりました。そこで本記事ではターミナル環境へのGitの導入方法について解説していきます。

ターミナルを開く

プロジェクトを作成して、新クラウドIDEを開きます。
中央下部にあるプラスアイコンをクリックしてターミナルを追加してください。

ここでは通常のLinuxコマンドがそのまま使えます。ディストリビューションはDebian、バージョンは9.4です(執筆時)。

$ cat /etc/debian_version
9.4

ターミナルを起動すると、デフォルトのディレクトリとして /project が開きます。ここが各プロジェクトのルートディレクトになります。

リポジトリの初期化

まずは git init . で初期化します。

$ git init .

VueやReact、AungularなどのJavaScriptフレームワークを利用している場合、node_modulesやコンパイル後のファイルなどはバージョン管理する必要がないため、管理対象から除外する .gitignore を使うのが一般的です。
例えば Vueプロジェクトの .gitignore の中身は次のようになっています。必要に応じて追加してください。

$ cat .gitignore
node_modules

リモートリポジトリの登録は以下のようにします。今回はGitHubのリポジトリを対象としています。

git remote add origin git@github.com:goofmint/vue-demo.git

公開鍵設定について

プッシュを行う前に、あらかじめ公開鍵の登録が必要です。最初は公開鍵がありませんので生成します。

$ ssh-keygen -t rsa -C "メールアドレス"

すると、公開鍵の保存先を聞かれますので、未入力のままEnterを押します。

Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa): 

次にパスワードを聞かれます。確認用とあわせて2回入力してください。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

これで ~/.ssh/id_rsa.pub に公開鍵が出力されます。
以下のコマンドを叩いて表示された文字列をコピーし、GitHubの Settings > SSH and GPG keys 画面に登録します。

cat ~/.ssh/id_rsa.pub

GitHubに公開鍵が正しく登録されていれば、プッシュが通るようになります。

$ git push
Counting objects: 4, done.
Delta compression using up to 24 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 344 bytes | 0 bytes/s, done.
Total 4 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To https://github.com/goofmint/vue-demo.git
   aaf063d..658a098  master -> master

なお、ターミナル環境はアカウントごとに共通ですので、別のプロジェクトに切り替えても同じ公開鍵が使えます。

注意点

既存のリポジトリをクローンしたい場合は、プロジェクトのインポート画面で「Gitのリポジトリからインポート」を選択してください。

まとめ

新しくなったクラウドIDEでは、ターミナル機能によってすべてのGitコマンドが使えるようになりました。本記事ではGit自体の操作方法については詳しく触れていませんが、これまでできなかったブランチの作成などもできるようになります。皆さんのアプリ開発をさらに効率化させるために、ぜひターミナル機能を使ってみてください。

ターミナル機能 | Monaca Docs