Android StudioはVCS(Version Control System:バージョン管理システム)を使って、プロジェクトの変更履歴の管理が可能です。
Android Studioで利用可能なVCSはいくつかありますが、Gitを取り上げて、リモートリポジトリの構築とGitHubアカウントを使ったプッシュ(履歴の登録)の方法を紹介します。
BitbucketよりGitHubの方がシンプルで使い易いかも…
※環境:Android Studio Narwhal 3 Feature Drop | 2025.1.3
Git version is 2.50.1
※前提:ローカルリポジトリの構築済み
目次
GitHubとは
GitHubは「GitHub, Inc.(日本支社:GitHub Japan)」が提供するGitのホスティングサービスです。
このホスティングサービスを利用して、Gitのリモートリポジトリ(リポジトリサーバー)が構築できます。
利用制限付きの無料枠があるので、個人利用に最適です。本格的な開発を行いたければ、後に有料枠へ移行して、制限を解除することも可能です。
同様なホスティングサービスとして、Bitbucketが広く知られています。
GitHubとBitbucketの無料枠を比較すると、次のような違いがあります。利用目的に合わせて選択すると良いでしょう!(※’25/09現在)
Bitbucket | GitHub | |
---|---|---|
リポジトリ数 | 無制限 | 無制限 |
リポジトリサイズ | 1GB(ワークスペース内合計) | 5GB(1GBを推奨) |
ファイルサイズ | 100MB ※LFSの利用が可能(1GBまで) | 100MB ※LFSの利用が可能(2GBまで) |
コラボレーター数 (共同開発者数) | 5 | 無制限 |
公開範囲 | プライベート (パブリックは有料) | プライベート パブリック |
※値は無料枠で使える範囲、範囲外は有料 ※プライベート:ネット上に非公開、パブリック:ネット上に公開 ※タイトル欄のリンク:無料・有料プランの機能比較 ※LFS:Large File Storage |
ここでは、GitHubを利用します。
GitHubアカウントの作成
GitHubを利用するために、アカウントを作成してください。
GitHubストレージの構成
GitHubのアカウントが作成されると、アカウント毎にストレージが割り当てられます。
このストレージへリモートリポジトリを構築することになります。
リポジトリの階層
基本は、アカウントの配下にリポジトリが並ぶ構成になります。
また、GitHubのサインインユーザーは共有アカウント(Organization)の作成が可能です。共有アカウントとは「複数人で共有するアカウント」のことです。
リポジトリの構成上は、アカウントと共有アカウントは同列になります。つまり、扱いは同じです。
アカウントと共有アカウントはGitHub内で重複しない名前が要求されます。アカウント名の取得は「早い者勝ち」ですので、他のユーザーにより使用済みの名前は使えません。
リポジトリは任意な名前が付けられます。
リポジトリのパス
リポジトリのパス(URL)は、先頭にGitHubのホスト名(github.com)をつけて、次のように表します。
github.com/アカウント名/リポジトリ名.git 例:github.com/userA/RepositoryA.git github.com/OrganizationA/RepoX.git ... 共有アカウント ※リポジトリ名は大文字・小文字の違いは無視されます。
PublicとPrivateリポジトリ
リポジトリは「Public」と「Private」の2種類があります。
リポジトリの作成時に選択できます。後に、変更も可能です。
Public
Publicの特徴は「誰でも無条件に読み出し(Clone,Pull)が出来る」ことです。ネットワーク上に公開することを意味します。
ただし、所有者以外の書き込み(Push)は出来ません。
◎:誰でも無条件に可(≒全世界に公開) 〇:トークンにより可 X:出来ない
Private
Privateの特徴は「所有者のみにアクセス(Clone,Pull,Push)を許す」ことです。所有者以外のアクセスは禁止です。
◎:誰でも無条件に可(≒全世界に公開) 〇:トークンにより可 X:出来ない
トークンの発行
所有者以外がアクセスしたい場合は、所有者が発行するトークンを使う方法があります。
トークンとは「所有者の権限の一部を委譲したチケット」です。
このチケットを持つアプリは、所有者に成り代わってアクセスを行えます。
※詳細は以下を参照
「Git:リモートリポジトリのクローンとプル(トークン、GitHub編)」
ローカルとリモートの関連付け
ローカルとリモートへリポジトリを作成しても、個別にリポジトリが存在するだけです。
両者の間に関連付けが必要です。つまり、ローカルからプッシュ(Push)やプル(Pull)を行ったら、関連付けされたリモートリポジトリがアクセス対象になるようにします。
関連付けの方法は2つあります。
一つは、リモート側へ先にリポジトリを作り、ローカル側へクローン(コピー)します。
もう一つは、ローカル側とリモート側に個別にリポジトリを作ります。この時、リモート側のリポジトリは空(何も登録がない)にします。
その後、ローカル側からリモート側へプッシュして、リポジトリを染め上げます。
今回は、後者の方法を使って関連付けを行うことにします。
理由は、Android Studioが作成する.gitignoreを有効利用するためです。
リモートリポジトリの作成
GitHubのサイトへサインインし、空のリポジトリ(リモート側)を作成します。
.gitignoreファイルは作りません。ここで.gitignoreを作ると、.gitignoreの履歴がリモートリポジトリへ登録されてしまいます。そして、ローカルリポジトリをプッシュしたときに、ローカルリポジトリ内の.gitignoreの履歴とコンフリクト(履歴の衝突)が発生してしまいます。
つまり、ここで作るリポジトリは「空」リポジトリです。
リポジトリの作成が終わると、次の案内が表示されます。
リポジトリのパスを確認しておきましょう!
プッシュ(Push)の実施
初回のプッシュを行うことにより、リモートリポジトリ(空)をローカルリポジトリで染め上げる処理を行います。
これにより、ローカルリポジトリで行われるプッシュの対象は、ここで染め上げたリモートリポジトリになります。
リモートの定義
Android Studioでローカルリポジトリ構築済みのプロジェクトを開きます。
リモートの定義は、Gitメニューの「Manage Repotes…」から行います。
「リモートの追加(+)」ボタンを押すと、「Define Remote」ウィンドウが開きます。
ここで、リモートリポジトリのパス(URL)を入力して「OK」ボタンを押下すると、ユーザー認証のためにGitHubへサインインを求められます。
このサインインは、GitHubの認可サーバーからAndroid Studio(JetBrains IDE)へ、トークンを発行してもらうための手続きです。OAuthが使われています。
jetBrains.com経由になる点に注意して下さい。
正常にサインインできれば、Android Studioへリモートリポジトリが定義されます。
これらは、Gitコマンドを操作した場合の”git remote”と同等な操作です。
> git remote add origin https://github.com/ユーザー名/SampleApp.git
プッシュの実行
プッシュの実行は、Gitメニューの「Push…」から行います。
「Push Commits to プロジェクト名」ウィンドウが開きます。
「Push」ボタンの押下でプッシュが開始され、変更履歴がローカルからリモート側へ送信されます。
プッシュの結果
プッシュ後に、GitHubサイトへサインインしてリポジトリを参照すれば、プッシュされた内容が確認できます。
トークンの保持
ユーザ認証後に発行されたトークンはAndroid Studio内に保持されるので、2回目以降はプッシュの実行だけで済みます。ユーザ認証は不要です。
トークンの保持状況は、Android Studioの「Settings->Version Control->GitHub」で確認できます。
関連記事: