Git:リポジトリのクローンとプル(SSH、Bitbucket編)

投稿日:  更新日:

Android StudioはVCS(Version Control System:バージョン管理システム)を使って、プロジェクトの変更履歴の管理が可能です。

Android Studioで利用可能なVCSはいくつかありますが、Gitを取り上げて、SSHを使ったリポジトリのクローン(コピー)とプル(履歴の取得)の方法を紹介します。

※この記事に掲載していた「SSHとは」は、「SSHで安全な通信経路を確立」へ分離しました。

※環境:Android Studio Electric Eel | 2022.1.1
    OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
※前提:リモートリポジトリの構築済み

スポンサーリンク

SSHによるアクセス

BitbucketにおけるSSHを使ったアクセスは、次のような特徴があります。
(※「Set up Repository Access keys on Windows」より抜粋

・Grant read-only access to a public or private repository.
(リポジトリへ読み出し専用アクセスを許可する)

・Don't require additional users on your plan.
(アクセスの為に追加のユーザを要求しない)

・Can be added to multiple repositories.
(複数のリポジトリへ追加できる)

・Can't also be associated with an account.
(アカウントに関連付けされない)

・Don't require a passphrase when used for automated processes.
(自動化された処理に使われる時、パスフレーズを要求しない)

アクセスは読み出し専用です。実行できるGit処理はクローン(Clone)とプル(Pull)のみになります。

スポンサーリンク

openSSHのインストール確認

Windows11はOpenSSHをオプション機能という形で提供します。

しかも、OpenSSHクライアントはWindowsのインストール時に実装(インストール)済みになっています。

openSSHクライアントの確認

Windowsのターミナルを開き、次のコマンドの実行で、実装されたOpneSSHの存在を確認できます。

> ssh -V
OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
スポンサーリンク

公開鍵・秘密鍵の作成

ユーザ認証で使用するユーザー鍵(ペア鍵:公開鍵・秘密鍵)を作成します。

Windowsのターミナルを開き、OpenSSHクライアントに含まれるssh-keygenコマンドを使って、次のように行います。

この例は、暗号化アルゴリズム ed25519 を選択しました。

> ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\user_a/.ssh/id_ed25519): [RET]
Enter passphrase (empty for no passphrase): パスフレーズ
Enter same passphrase again: パスフレーズ
Your identification has been saved in C:\Users\user_a/.ssh/id_ed25519  ... 秘密鍵
Your public key has been saved in C:\Users\user_a/.ssh/id_ed25519.pub  ... 公開鍵
The key fingerprint is:
SHA256:P1***************************************dk user_a@hostname
The key's randomart image is:
+--[ED25519 256]--+
|     .oo+=*O+    |
|     .oo=E* o.o o|
|     ...oB o o =+|
|       o* . = o *|
|      o+S. o.+ o+|
|       . ...... o|
|          +   o .|
|           o . . |
|                 |
+----[SHA256]-----+

ペア鍵はデフォルトでホーム(C:\Users\ユーザー名)の.sshフォルダに「”id_”+アルゴリズム名」というファイル名で出力します。このフォルダとファイルがデフォルトで参照される鍵になります。

秘密鍵は他者へ知られないよう厳重に管理してください。.sshフォルダのアクセス許可の範囲(ファイルバーミッション)を制限するのが良いでしょう!

また、秘密鍵は他者へ漏洩した場合を考慮して、パスフレーズによる暗号化が施されます。

ですので、ユーザ認証を行う際に、パスフレーズの入力が求められることになります。

鍵の参照先
OpenSSHにおいてデフォルトで参照される鍵は下記の通りです。

フォルダ:ユーザのホームの.sshフォルダ
       Windows ⇒ C:\Users\ユーザー名\.ssh
       Linux   ⇒ ~/.ssh
ファイル:"id_" + アルゴリズム名

デフォルト以外の鍵を参照したければ、.ssh/configファイルで明示的に指定します。

Host bitbucket.org
  IdentityFile ~/.ssh/キーファイル名
スポンサーリンク

公開鍵の登録

ユーザ認証で使用する公開鍵をサーバーへ登録します。

各々の階層(リポジトリ・プロジェクト・ワークスペース)に登録が可能です。登録された階層により、対象になるリポジトリの範囲が異なるので注意してください。

公開鍵の登録先対象になるリポジトリの範囲
リポジトリリポジトリのみ
プロジェクトプロジェクト以下のリポジトリ
ワークスペースワークスペース以下のリポジトリ
リポジトリへ登録プロジェクトへ登録ワークスペースへ登録
公開鍵をリポジトリへ登録
↓↓↓ 初回のみ表示 ↓↓↓

公開鍵を登録
公開鍵をプロヘクトへ登録
↓↓↓ 初回のみ表示 ↓↓↓

公開鍵を登録
公開鍵をワークスペースへ登録

「Add SSH key」ウィンドウが開くので、コピー&ペーストでKey情報を入力します。Labelは識別のための名前なので、任意な文字列を指定します。

公開鍵を登録

「Add SSH key」ボタンの押下で登録です。

公開鍵の登録後、ワークスペースの所有者宛にE-Mailで通知が届きます。

アクセスキー登録の通知

 公開鍵の登録は誰がおこなう? 
公開鍵の登録は管理者に依頼します。これが正当な方法です。

個人の開発環境は、「管理者=ユーザー(開発者)」である事がほとんどです。結局のところ、ユーザ自身で行うことになります。

スポンサーリンク

クローン(Clone)の実施

リポジトリのクローンを行う方法は、次の2通りがあります。

WelcomパネルからFileメニューから
Welcomパネルからクローン
Fileメニューからクローン

「Clone」ボタンの押下でクローンが開始されます。

この後、ホスト認証とユーザー認証が行われます。

スポンサーリンク

ホスト認証

クライアント(開発用のPC)がサーバ(リポジトリサーバ)へ始めてアクセスする時、ホスト認証でサーバーFingerPrintの確認が求められます。

サーバーFingerPrintの問い合わせ

FingerPrintはBitbuckerの「Configure SSH and two-step verification」に掲載されています。

「Yes」ボタンを押下で了承が成立します。

了承が成立すると、了承済みのFingerPrintがknown_hostsファイルに登録されます。次回以降は、このファイルを参照して認証が行われるようになります。ですので、FingerPrintの確認は求められません。

ユーザー認証

クライアント(開発用のPC)がサーバ(リポジトリサーバ)へアクセスする時、毎回、ユーザ認証で秘密鍵を複合するためのパスフレーズが求められます。

パスフレーズの入力

ユーザー鍵(ペア鍵:公開鍵・秘密鍵)を作成した時に設定したパスフレーズを入力します。

ここで、「Remember」へチェックを行えば、Android Studio内にパスフレーズが記録(KeePassにより管理)できます。次回以降は、Android Studioがパスフレーズの入力を肩代わりしてくれるので、入力は求められません。

※KeePassについては「KeePassでパスワードを管理」を参照

スポンサーリンク

プル(Pull)の実施

リモートリポジトリから最新の履歴が取得できます。

リポジトリのプルは「Git」メニューから行います。

リポジトリのプル(Pull)

「Pull」ボタンの押下でプルが開始されます。

スポンサーリンク

リモートの定義

クローン後のAndroid Studioプロジェクトはリモートリポジトリが定義されています。

> git config --local  --list
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
submodule.active=.
remote.origin.url=git@bitbucket.org:gittestroom/sampleapp.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

ただし、クローンを行った時に指定したURLがそのまま定義されます。

スポンサーリンク

関連記事:

Android StudioはVCS(Version Control System:バージョン管理システム)を使って、プロジェクトの変更履歴の管理が可能です。 Android Studioで利用可能なVCSはいくつかありますが、Gitを取り上げて、ローカルリポジトリの構築とコミット(履歴の登録)の方法を紹介します。 ※環境:Android Studio Electric Eel | 2022.1.1 ※Git自体の説明は行いません。 ...
Android StudioはVCS(Version Control System:バージョン管理システム)を使って、プロジェクトの変更履歴の管理が可能です。 Android Studioで利用可能なVCSはいくつかありますが、Gitを取り上げて、リモートリポジトリの構築とアプリパスワードを使ったプッシュ(履歴の登録)の方法を紹介します。 ※環境:Android Studio Electric Eel | 2022.1.1 ※前提:ローカルリポジトリの構築済み ...
Android StudioはVCS(Version Control System:バージョン管理システム)を使って、プロジェクトの変更履歴の管理が可能です。 Android Studioで利用可能なVCSはいくつかありますが、Gitを取り上げて、アプリパスワードを使ったリモートリポジトリのクローン(コピー)とプル(履歴の取得)の方法を紹介します。 ※環境:Android Studio Electric Eel | 2022.1.1 ※前提:リモートリポジトリの構築済み ...
Android Studioで採用されている、パスワード管理ツール「KeePass」について、まとめます。 ※環境:Android Studio Narwhal 3 Feature Drop | 2025.1.3 ...
サーバーとクライアント間でデータを受け渡しする際に、安全な通信経路を確立する目的で、SSHが広く使われています。 Android Studio(Gitクライアント)とBitbucketまたはGitHub(Gitサーバー)間も、SSHが利用できます。 今回は「SSHの概要」を、まとめます。 ※この記事は「Git:リポジトリのクローンとプル(SSH、Bitbucket編)」から「SSHとは」を分離したものです。加筆も行っています。 ...
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 ※前提:ローカルリポジトリの構築済み ...
Android StudioはVCS(Version Control System:バージョン管理システム)を使って、プロジェクトの変更履歴の管理が可能です。 Android Studioで利用可能なVCSはいくつかありますが、Gitを取り上げて、トークンを使ったリモートリポジトリのクローン(コピー)とプル(履歴の取得)の方法を紹介します。 BitbucketよりGitHubの方がシンプルで使い易いかも... ※環境:Android Studio Narwhal 3 Feature Drop | 2025.1.3     Git version is 2.50.1 ※前提:リモートリポジトリの構築済み ...
Android StudioはVCS(Version Control System:バージョン管理システム)を使って、プロジェクトの変更履歴の管理が可能です。 Android Studioで利用可能なVCSはいくつかありますが、Gitを取り上げて、SSHを使ったリポジトリのクローン(コピー)とプル(履歴の取得)の方法を紹介します。 BitbucketよりGitHubの方がシンプルで使い易いかも… ※環境:Android Studio Narwhal 3 Feature Drop | 2025.1.3     Git version is 2.50.1     OpenSSH_for_Windows_9.5p2, LibreSSL 3.8.2     Windows 11 Pro 24H2 ※前提:リモートリポジトリの構築済み ...
スポンサーリンク