GitHubからAndroid端末に「git clone」するためには、ターミナルアプリが必要です。
本記事では、「UserLAnd」というターミナルアプリを使用して「git clone」する手順について詳しく説明します。
なお、プライベートリポジトリをcloneする場合は、アカウント上で生成できる「アクセストークン」も必要です。アクセストークンの取得方法と使用方法についても、この記事で丁寧に解説します。
【前準備】Android端末で「git」を使えるようにする
1.「UserLAnd」をインストール
gitの操作を行うためには、「git clone」などのコマンドをターミナルで実行する必要があります。Android端末では、Playストアを通じてターミナルアプリを簡単にインストールできます。
以前は「Termux」というアプリが推奨されていました[1]が、現在では「UserLAnd」というアプリがおすすめです。
2.ターミナルを開く
UserLAndを起動し、ターミナルを開く手順を詳しく見てみましょう。
まず、「Ubuntu」をクリックします。
クリックすると、2つの質問が表示されます。「Please select a desktop environment:
」に対しては「Minimal」を選び、「Please select a connection type:
」に対しては「Terminal」を選択します。
これにより、下記のようなターミナルが起動します。
3.「update」と「upgrade」をする
まず初めに、aptを更新します。
userland@localhost:~$ sudo apt update
userland@localhost:~$ sudo apt upgrade -y
4.「git」をインストールする
次に、「git」をインストールします。
userland@localhost:~$ sudo apt install git -y
これにより、Android上で「git」が利用可能となります。
パブリックリポジトリを「git clone」する
Gitをインストールした後は、単に「git clone」を行えば良いのですが、UserLAndではAndroidストレージへの直接アクセスが制限されています。
まず、UserLAndのホームディレクトリを確認します。フォルダやファイルが存在しないことが確認できます。
userland@localhost:~$ pwd
/home/userland
userland@localhost:~$ ls
userland@localhost:~$
この状態で、自分が開発した「marktree」をcloneしてみます。
userland@localhost:~$ git clone https://github.com/yusu79/marktree.git
userland@localhost:~$ ls
marktree
クローンは成功しましたが、Androidから直接このフォルダにアクセスできません。
フォルダ管理アプリ「ファイルマネージャー」でメインストレージ内を検索しても、「marktree」が見つかりません。
これがUserLAndの特徴です。Termux では「ファイル」アプリから Termux 側の Home ディレクトリに直接アクセスできますが UserLAnd はできません[2]。
その対策として、UserLAndには、「ファイル」アプリから共有可能な別の領域「/storage/internal
」が用意されています[3]。ここにcp -r
などを使用してコピーすれば、Androidからファイルを参照できます。
userland@localhost:~$ cp -r marktree /storage/internal
再び「ファイルマネージャー」で「marktree」を検索すると、検索結果に表示されます。フォルダをタップすると、ちゃんとアクセスできています。
ただし、「/storage/internal
」に直接アクセスしてgit clone
することはできません。
一度marktreeを削除してから、もう一度cloneしてみます。
userland@localhost:~$ cd /storage/internal
userland@localhost:/storage/internal$ ls
userland@localhost:/storage/internal$ git clone https://github.com/yusu79/marktree.git
Cloning into 'marktree' ...
(中略)
fatal: fetch-pack: invalid index-pack output
git clone
に失敗しました。そのためUserLAndでGitHubからcloneする際は、
- ホーム以下に「
git clone
」する - それを「
/storage/internal
」以下にコピーする
という手順を踏む必要があります。これは「git pull
」でも同様です。
プライベートリポジトリを「git clone」する
次に、プライベートリポジトリをダウンロードしてみましょう。
基本的な手順はパブリックリポジトリと同じですが、GitHubにログインせずにgit clone
を行う場合は、「アクセストークン」が必要です。
アクセストークン無しで「git clone」してみる
試しに、アクセストークンなしでクローンしてみます。今回はあらかじめ作成した「obsidian-backup」というプライベートリポジトリを対象にします。
同じくgit clone
を実行します。
userland@localhost:~$ git clone https://github.com/yusu79/obsidian-backup.git
すると、「ユーザー名」と「パスワード」が求められます。
Cloning into 'obsidian-backup'...
Username for 'https://github.com': yusu79
Password for 'https://yusu79@github.com':
素直に両方とも入力すると、以下のメッセージが表示されます。
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/yusu79/obsidian-backup.git/'
リモート: パスワード認証のサポートは2021年8月13日に削除されました。
リモート: 現在推奨されている認証モードの情報については、https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls を参照してください。
致命的エラー:https://github.com/yusu79/obsidian-backup.git/
の認証に失敗しました。
この翻訳はChatGPTによるものです(出典: ChatGPT)
上記のメッセージの通り、2021年8月以降、パスワード認証でプライベートリポジトリをcloneすることは出来なくなりました。
アクセストークン有りで「git clone」してみる
このように、アクセストークンがないとプライベートリポジトリをgit clone
することはできません。
以下のサイトにアクセスし、アクセストークンを生成する手順を説明します。
まず、「Generate new Token」をクリックします。
トークンには任意の名前を付けます。ここでは「obsidian-backup」としましょう。Expirationはアクセストークンの有効期限で、デフォルトは30日です。
「Repository access」では、アクセストークンがアクセスできるリポジトリを選択します。一番下の「Only select repositories」を選び、「obsidian-backup」リポジトリを選択します。
「Permissions」では、アカウントには一切の権限を与えず、「Account permissions」は「No Access」のままにします。一方でリポジトリには「Contents」と「Metadata」のみを選び、「Read-only」にします。
こうすることで、git clone
とgit pull
しか出来なくなります。
最後に「Generate token」をクリックします。
これで、アクセストークンが表示されます。このトークンをコピーして保管しておくと、これがパスワードの代わりとなります。
次に、「obsidian-backup」をクローンします。パスワードには先ほど生成した「アクセストークン」を貼り付けます。
userland@localhost:~$ git clone https://github.com/yusu79/obsidian-backup.git
Cloning into 'obsidian-backup'...
Username for 'https://github.com': yusu79
Password for 'https://yusu79@github.com': [アクセストークン]
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 9 (delta 0), reused 9 (delta 0), pack-reused 0
Receiving objects: 100% (9/9), done.
これでクローンが成功しました。
userland@localhost:~$ ls
marktree obsidian-backup
残る作業は、marktreeと同様に「/storage/internal
」にコピーすることです。
$ cp -r obsidian-backup /storage/internal
ファイルマネージャーでメインストレージで「obsidian-backup」と検索すると、正しく表示されます。
ただし、一度クローンした後でも「git pull
」を行う場合、アクセストークンが必要になるので注意が必要です。
userland@localhost:~$ cd obsidian-backup
userland@localhost:~/obsidian-backup$ git pull
Username for 'https://github.com': yusu79
Password for 'https://yusu79@github.com':
まとめ
この記事では、Android端末でGitHubから「git clone
」を行う方法についてまとめました。
Android端末でgitを使用するためには、まずターミナルアプリが必要です。複数の選択肢がありますが、この記事では「UserLAnd」を使用した手順を解説しました。
UserLAndではAndroidから直接アクセスできないため、ダウンロードしたファイルは「/storage/internal/
」にコピーしてください。また、「/storage/internal/
」以下に直接クローンやプルはできないことに留意してください。
プライベートリポジトリをクローンする際は、アクセストークンが必要です。2021年8月13日以降はパスワード認証ができなくなったため、注意が必要です。