Android Studio最速入門~効率的にコーディングするための使い方

第24回バージョン管理 ─GitとGitHub連携

はじめに

今回から具体的なバージョン管理システムを用いたAndroid Studioの連携を紹介します。第3回で紹介したサンプルコードが手頃なので、このプロジェクトをそれぞれのバージョン管理システムに対応させていきます。

手始めに最近もっとも人気があるGitとGitHubについてです。GitやGitHubについては多くを説明しませんので、他の記事やWebリソースで学習しておいてください。

事前準備

Android Studioは標準でGitやGitHubをサポートしていますが、最低限以下の準備を行っておいてください。

  • Gitのコマンドラインツールgitを導入しておく
  • GitHubのアカウントを用意しておく

コマンドラインツールはGitの公式サイトから、それぞれのプラットフォームに対応したものをダウンロードしてインストールしておいてください。

環境変数 PATHgitコマンドが登録されていればAndroid Studio側は特に設定は要りません。このあたりの説明を読んでも「?」と思う方は「Preferences / Version Control / Git」「Path to Git executable」gitコマンドの場所を指定しておいてください。

図1 ⁠Preferences / Version Control / Git」設定画面
図1

Android StudioのGitサポートの実態は「Android Studioからgitコマンドを実行して、あたかもシームレスに連携できているようにみせる」です。Android Studio自体にGitクライアントの機能はありません。そのため、GitクライアントとしてのさまざまなオプションはAndroid Studioではなく、gitコマンドに対して行います。

たとえば、企業ネットワーク内などプロキシを経由しないとインターネットに接続できない環境で使用する場合は、リスト1のように<HOME>/.gitconfigにプロキシサーバの設定を行います(Android Studioのプロキシ設定はgitコマンドに影響しません⁠⁠。

リスト1 .gitconfigにプロキシサーバの設定を行う
[http]
  proxy = http://proxy.example.com:8080

事前準備はこれでおしまいですが、gitコマンド、Android Studioの他にもうひとつGitクライアントを用意しておきましょう。Android StudioのGitサポートは万能ではないので、代替として専用のクライアントを用意しておいたほうが断然良いです。なんでもかんでもAndroid Studioで済まそうとするとストレスの元なので「面倒だな」と思った操作はとっとと見切りをつけてコマンドラインか専用クライアントで作業したほうが簡単です。

GitのせMacの場合はSourceTreeWindowsの場合はSourceTreeかTortoiseGitあたりがオススメです。

プロジェクトをGit連携する

Git連携するプロジェクトが無い場合はまずはそのプロジェクトを作成しましょう。Git連携は望んだときにいつでもできるので、すでに作成済みのプロジェクトがあればそれを用いても構いません。

メニューバーから「VCS → Enable Version Control Integration...」を実行し「Git」を選びます。

図2 "Enable Version Control Integration..."の実行例
図2

「VCS → Import into Version Control → Create Git Repository...」でも同じ結果になります。

図3 "Create Git Repository..."の実行例
図3

こちらを実行した場合は、図4のように任意のディレクトリをGitリポジトリにできます(先ほどの"Enable Version Control Integration"は必ずプロジェクトルート<PROJECT_HOME>がGitリポジトリの場所になります⁠⁠。

図4 "Create Git Repository..."ではリポジトリの場所を指定する
図4

これで、プロジェクトがGit連携状態になりました。ツールバーにVCS関連のアイコンが追加され、⁠Changesツールウィンドウ」「Version Controlツールウィンドウ」が表示されます。

図5 Git連携状態のAndroid Studio
図5

Git連携の場合、ステータスバーの右端にブランチ名が表示されます。この地味ぃなインターフェイスは意外に便利なので、存在を覚えておいてください。

細かい設定の話はあとでまとめて紹介しますが、この一連の操作で登録したGit連携の情報は「Preferences / Version Control」で確認することができます<PROJECT_HOME>がGitに設定されていることがわかります⁠⁠。

図6 ⁠Preferences / Version Control」設定画面
図6
<PROJECT_HOME>が絶対パスになっているのが気に入りませんが、内部的には相対パスで管理しているようです。

ちなみに、この状態はまだ何もGitリポジトリにAddされていませんが、プロジェクト自体はGitリポジトリになっています。

図7 プロジェクトとGitリポジトリの状態
図7

Gitリポジトリに対する操作

先ほどの操作でプロジェクトがGitリポジトリと連携されたので、実際にファイルを追加し、それをリポジトリにコミットしてみましょう。

リポジトリにファイルを追加する

方法はいくつかあります。筆者が気に入っているやり方は「Changesツールウィンドウ」「Unversioned Files」「Default」にドラッグ&ドロップするやり方です。

図8 ⁠Changesツールウィンドウ」からファイルを追加する(クリックすると動きがわかります)

その他のやり方だと「Projectツールウィンドウ」「Navigation Bar」<PROJECT_HOME>を選んだ状態で以下の操作を行う方法があります。

  • "VCS Operations Popup" から "Add to VCS" を実行する
  • コンテキストメニューから「Git → Add to VCS」を実行する
図9 ⁠Projectツールウィンドウ」のコンテキストメニューからファイルを追加する
図9

Git連携の設定直後のように、すでにある程度ファイルができている場合は、上記のような操作をしますが、Git連携後にAndroid Studio上でファイルを作成した場合、都度「Gitリポジトリにも追加するか?」といった旨のダイアログが登場するようになります(削除や移動、コピーなども同様です⁠⁠。

図10 ファイル作成時に登場するVCS連携するかどうかの確認ダイアログ
図10
※ダイアログの「Remember, don't ask again」をONにすると、以降問い合わせてこなくなります。筆者は小心者なので、ここをONにしたことはありません(ONにしてしまった場合、⁠Preferences / Version Control / Confirmation」で元に戻せます⁠⁠。

リポジトリの変更を取りやめる

リポジトリへのファイルの追加や変更、削除を取りやめ元の状態に戻したい場合は"Revert"を実行します。"Revert"の実行方法は次の3通りほどありますので、各自使いやすい方法を選択してください。

  • 「Changesツールウィンドウ」「Default」を選んで、"Revert"を実行する
  • ⁠Projectツールウィンドウ」<PROJECT_HOME>を選んだ状態で、
    • "VCS Operations Popup..."から"Revert"を実行する
    • コンテキストメニューから「Git → Revert」を実行する
図13 ⁠Changesツールウィンドウ」「Revert」アイコン
図13

"Revert"を実行すると図14のようなダイアログが表示されます。

図14 ⁠Revert Changes」ダイアログ
図14

このダイアログでチェックが付いているファイル(やディレクトリ)が取りやめ(Revert)の対象になります。このチェックボックス付きのファイル一覧は、VCS連携操作でちょくちょく出てくるので、使い方を覚えておいてください(要するにチェックが付いたものだけが処理対象となります⁠⁠。

リポジトリにコミットする

リポジトリに対する変更をコミットしてみましょう。コミットの方法も多岐にわたります。ざっと思いついただけで、これだけありますので、使いやすそうな方法を覚えてしまいましょう。

  • 「Changesツールウィンドウ」「Default」を選んで、"Commit Changes"を実行する
  • メニューバーの「VCS → Commit Changes」を実行する
  • ツールバーの「Commit Changes」を実行する
  • "VCS Operations Popup..."から"Commit Changes"を実行する
  • 「Projectツールウィンドウ」<PROJECT_HOME>を選んだ状態でコンテキストメニューの「Git → Commit Directory」を実行する

コミットを実行すると図15のようなダイアログが表示されます。コミットコマンドを実行した場所によって、ファイル一覧のチェックボックスが一部のファイルにしか付いてない場合がありますのでご注意ください(意図的に特定のファイルだけをコミットすることができます⁠⁠。

図15 ⁠Commit Changes」ダイアログ
図15

この「Commit Changes」ダイアログの詳細については後の回で紹介するので、とりあえずコミットしてみましょう。画面下側にある「Comment」欄にコミットログを記述します。画面右側にある「Before Commit」はコミット前処理を指定します。いろいろできて便利なのですが、面倒も多いので当面は全部OFFにしておいてください。

コミットログを記述したならコミットを実行しましょう。コミット実行は画面右下にある「Commit」ボタンから行います。が、このボタン、なんかちょっとおかしいです。

図16 ちょっと不思議なCommitボタン
図16

この「Commit」ボタン、ボタンでありながらプルダウンメニューとして振る舞います。もともとCVSやSubversionといった中央型のバージョン管理システム向けのインターフェイスを分散バージョン管理システム向けにも無理矢理使い回したため、このようなトンデモなインターフェイスができあがりました。

ちなみに「Preferences / Appearance」「Allow merging buttons on dialogs」をOFFにすることで、この変なインターフェイスを解除することができます。

図17 ⁠Preferences / Appearance」設定画面
図17

「Allow merging buttons on dialogs」をOFFにした場合の「Commit Changes」ダイアログのボタン群は図18の通りです。ひいき目に見てもこちらのほうがわかりやすいです。なにより「Allow merging buttons on dialogs」が、この「Commit」ボタンのためだけにあるオプションというのが可笑しくもあります。

図18 ⁠Allow merging buttons on dialogs」をOFFにした場合
図18

リポジトリのコミットログをみる

無事にコミットができたなら、そのログを確認してみましょう。コミットログは「Changesツールウィンドウ」「Log」タブで確認することができます。

図19 ⁠Changesツールウィンドウ」「Log」タブ
図19

「Projectツールウィンドウ」などで<PROJECT_HOME>を選び、"VCS Operations Popup..."やコンテキストメニューの"Show History"を実行してもコミットログを確認できますが、そちらは「Changesツールウィンドウ」ではなく「Version Controlツールウィンドウ」に表示されます(若干、機能が劣ります⁠⁠。

リポジトリをGitHubに公開する

このままではプロジェクトが単にGitリポジトリになっただけなので、このリポジトリをGitHubに公開してみましょう。GitHubに公開するにあたり、事前にGitHubに該当リポジトリを作成しておく必要はありません。必要なのはGitHubのアカウントだけです。

図20 ローカルのGitリポジトリをGitHubに公開する
図20

メニューバーから「VCS → Import into Version Control → Share project on GitHub」を実行します。

図21 ⁠VCS → Import into Version Control → Share project on GitHub」を実行
図21

Android Studioから初めてGitHubにアクセスする場合は、図22のような認証ダイアログが表示されるので、適切なアカウントでGitHubにログインしてください。

図22 ⁠Login to GitHub」ダイアログ
図22

認証が成功した場合、入力したパスワードをAndroid Studioのキーストアに格納するためマスターパスワードを問い合わせてきます。このマスターパスワードは次回以降のアクセスの際に用いますので、忘れずに覚えておいてください。

図23 ⁠Master Password」ダイアログ
図23
※パスワードをどう保存するかは「Preferences / Passwords」で設定します。

参考までに、次回以降GitHubにアクセスすると図24のようにマスターパスワードの問い合わせだけで、それ以外のダイアログは省略されます。

図24 ⁠Master Password」ダイアログ(確認用)
図24

初回は長い道のりを辿りますが、ここまできてやっとプロジェクトをGitHubに公開するダイアログが表示されます。

図25 ⁠Share Project On GitHub」ダイアログ
図25

プロジェクト名(New repository name)はプリセットしてありますが、後でチェックアウト(クローン)することを考慮すると、今のプロジェクトと同じ名前にしておくのが無難です。

プロジェクト名と概要(Description)を入力し終えたなら「Share」ボタンを押すとGitHubに公開されます。具体的には以下のことを行います。

  • GitHubに該当リポジトリを作成し、
  • ローカルのリポジトリにGitHubのリポジトリを登録(add remote)し、
  • GitHubのリポジトリにpushします。

これでGitHubへの公開はおしまいです。うまくいくと、このようにものすごく簡単にできます。

GitHubからプロジェクトをチェックアウト(クローン)する

ようやっとGitHubにリポジトリを公開できました。今度はGitHubのリポジトリからローカルにチェックアウト(クローン)してみましょう。たとえば、自宅のPCと会社のPCとでリポジトリを共用する、といったケースを想定するとわかりやすいと思います。

図26 Gitリポジトリを別のPCにチェックアウトする
図26

GitHubからリポジトリのチェックアウトは、Android Studioのウェルカム画面から行います。左側のメニューから「Check out from Version Control」を選び、ポップアップから「GitHub」を選択します。すると「Clone Repository」ダイアログが表示されるので「Git Repository URL」からチェックアウトしたいリポジトリURLを選択します。

GitHub連携の場合、この「Git Repository URL」のプルダウンリストに既存のGitHubリポジトリが一覧表示されるので、そこから任意のリポジトリURLを選択するだけで済みます。図27のムービーではさほど時間がかかってないように見えますが、ネットワークなどの条件によっては「Clone Repository」ダイアログが出るまでものすごく時間がかかります(気長に待ちましょう⁠⁠。

図27 GitHubチェックアウトの流れ(クリックすると動きがわかります)

「Clone」ボタンを押すとチェックアウト(クローン)を開始します。それが済むと、そのままプロジェクトを開くかと聞いてくるので、指示に従ってプロジェクトを開きましょう。リポジトリにAndroid Studioのプロジェクト設定ファイルも登録してあるので、諸条件が満たされていれば(?)難なくプロジェクトを開くことができると思います(この「諸条件」も後の回で説明します⁠⁠。

GitHubに公開する時と同じく、ファイアウォール内だとGitHubのリポジトリ一覧取得に失敗する事があります。その場合も慌てず騒がすGitHub連携を止め、ウェルカム画面の「Check out from Version Control」「Git」を選択しましょう。

「Check out from Version Control」「GitHub」ではなく「Git」を選択した場合も「Clone Repository」ダイアログが表示されます。⁠GitHub」選択時との違いは「Git Repository URL」のブルダウンリストに何も表示されない事だけです。

図28 ⁠Check out from Version Control」「Git」を選んでも同じダイアログが表示される
図28

次回の予定

今回紹介した内容はGitとGitHub連携の初歩の初歩だけなので、次回はもう少し踏み込んだGit/GitHub連携の使い方について紹介します。

おすすめ記事

記事・ニュース一覧