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

投稿日:  更新日:

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
※前提:リモートリポジトリの構築済み

スポンサーリンク

SSHによるアクセス

GitHubにおけるSSHを使ったアクセスは、次のような特徴があります。

・接続を許可したユーザーの所有する全リポジトリがアクセス対象になる

・リポジトリへ書き込みと読み出しを許可する
 許可する権限の範囲を制限できない(例:読み出し専用)

・アクセスの為のユーザーを必要としない
 アクセスキー(SSHの公開鍵)の登録があればアクセス可能

・ユーザー認証でID(ユーザ名)とパスワードを必要としない
 自動化された処理に適している

特に、SSHによるアクセスは、全リポジトリへ読み書きが出来てしまいます。サインインユーザー以外の利用は、注意が必要です。

スポンサーリンク

openSSHのインストール確認

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

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

OpneSSHの実装をチェック

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

PowerShell 7.5.3
> ssh -V
OpenSSH_for_Windows_9.5p2, LibreSSL 3.8.2
スポンサーリンク

公開鍵・秘密鍵の作成

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

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

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

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

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

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

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

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

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

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

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

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

公開鍵の登録

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

登録はSettingsページの「SSH keys」で行います。

SettingsページのSSH and GPG keys

「Add new SSH Key」で公開鍵をKey欄へ張り付ければ良いです。

Add new SSH Key

登録されたkeyは、「SSH keys」に一覧表示されます。

SSH Keysの一覧

また、公開鍵の登録後、サインインユーザー宛にE-Mailで通知が届きます。

The following SSH key was added to your account:

Android Studio UserX
SHA256:K7tt**************************************2E

If you believe this key was added in error, you can remove the key and disable
access at the following location:
 公開鍵の登録は誰がおこなう? 
公開鍵の登録は管理者に依頼します。これが正当な方法です。

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

スポンサーリンク

クローンの実施

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

WelcomパネルからFileメニューから
WelcomパネルからClone
FileメニューからClone

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

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

スポンサーリンク

ホスト認証

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

Fingerprintの確認

FingerPrintはGitHubの「GitHub の SSH キーフィンガープリント」に掲載されています。

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

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

ユーザー認証

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

Passphraseの入力

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

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

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

スポンサーリンク

プルの実施

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

リポジトリのプルは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@github.com:ユーザ名/SampleApp.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

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

スポンサーリンク

関連記事:

アプリ開発の中で作成したクラスや関数などを資産としてライブラリ化し、次のアプリ開発で再利用するといったスタイルは、開発効率を上げる常套手段です。 私のように個人でアプリを開発している場合、この恩恵は薄いのですが、ソフトハウス(死語?)で年間に多くのアプリを開発している現場では濃いと思います。 「誰かが欲しいと思う機能」は「誰もが欲しいと思う機能」です。同じような仕様のアプリ開発を受注することはありませんか?機能の骨幹はライブラリからの流用に任せて、外観は顧客の要望に合わせるだけで済んだら、楽です。 今回は、Android Studio(アプリ開発)で参照するライブラリの種類について、まとめます。 ...
Module Libraryの構築と参照方法について、まとめます。 ※環境:Android Studio Bumblebee | 2021.1.1 ...
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を取り上げて、SSHを使ったリポジトリのクローン(コピー)とプル(履歴の取得)の方法を紹介します。 ※この記事に掲載していた「SSHとは」は、「SSHで安全な通信経路を確立」へ分離しました。 ※環境:Android Studio Electric Eel | 2022.1.1     OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3 ※前提:リモートリポジトリの構築済み ...
Android StudioはVCS(Version Control System:バージョン管理システム)を使って、プロジェクトの変更履歴の管理が可能です。 Android Studioで利用可能なVCSはいくつかありますが、Gitを取り上げて、アプリパスワードを使ったリモートリポジトリのクローン(コピー)とプル(履歴の取得)の方法を紹介します。 ※環境:Android Studio Electric Eel | 2022.1.1 ※前提:リモートリポジトリの構築済み ...
プロジェクトのビルドで「Something went wrong while checking for version compatibility between the Compose Compiler and the Kotlin Compiler.」とメッセージを吐き、エラーになる場合があります。 既存のプロジェクトを新しくリリースされたAndroid Studioでビルドした場合に頻発します。 先日、「Giraffe|2022.3.1」がリリース(2023.07)されて、早速、ビルドをしたら発生しました。 その対処方法を説明します。 ※環境:Android Studio Giraffe | 2022.3.1 ...
Android Studio Giraffe(2023.07)になって、ビルドスクリプトの推奨がKotlin DSLになりました。 この機会に、ビルドスクリプトと記述言語についてまとめます。 ※環境:Android Studio Giraffe | 2022.3.1    :Android Gradle Plugin 8.1.0    :Gradle 8.0 ...
Module Libraryの構築と参照方法について、まとめます。 この記事は「Module Libraryの構築と参照(2022.04発行)」をAndroid Studio Giraffe(2023.07)向けに書き直したものです。 GiraffeよりGradleでKotlin DSLが推奨になりました。それに従い、ビルドスクリプトをKotlinで記述したコードに置き換えています。 ※環境:Android Studio Giraffe | 2022.3.1    :Android Gradle Plugin 8.1.0    :Gradle 8.0 ...
表示の変わらないUI要素(Composable関数)に対して行われる再Composeは無駄な処理です。 ですので、極力排除したいところですが、表示が変わらないため、画面上からの判断が難しくなっています。 このようなとき、Layout Inspectorを利用すると、無駄な再Composeを見つけ出すことが出来ます。 ※環境:Android Studio Giraffe | 2022.3.1 Patch 1 ...
「Android Studio Giraffe」の作成するプロジェクトは、Jetpack Composeの利用が推奨されます。 今後、Viewシステムに代わり、Jetpack Composeが主流になるようです。 ※環境:Android Studio Giraffe | 2022.3.1 Patch 1     Kotlin 1.8.10     Compose Compiler 1.4.3 ...
Android StudioにおけるJetpack Composeプロジェクトは、エディタ上でUIのプレビューが行えます。 Kotlinで記述した画面構成(UIツリー)が視覚的に確認できるので、とても便利です。 さらに、色々な表示条件の設定が行えるので、使いこなせば更に利便性が向上します。 ※この記事の執筆中にドキュメント「コンポーザブルのプレビューで UI をプレビューする」を見つけました。記事はこのドキュメントと重複する部分が多いです。ドキュメントも参考にして下さい。 ※環境:Android Studio Giraffe | 2022.3.1 Patch 3     Kotlin 1.8.10     Compose Compiler 1.4.3 ...
データベースを扱うアプリケーションの開発で、動作を確認するためにデータベースの閲覧が出来ると便利です。 データベースは、マネージメントシステムを介してアクセスされるため、プログラムからブラックボックスに見えます。 ですので、データベース内部の問題は見つけ難いです。 デバックおいてデータベースの閲覧が出来れば、内部の問題を用意に確認できます。 ※環境:Android Studio Ladybug | 2024.2.1 Patch 2     DB Browser for SQLite バージョン 3.13.1 ...
Android Studioで採用されている、パスワード管理ツール「KeePass」について、まとめます。 ※環境:Android Studio Narwhal 3 Feature Drop | 2025.1.3 ...
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 ※前提:リモートリポジトリの構築済み ...
スポンサーリンク