GitHub GHClone - 国内 GitHub 高速化スキル
適用シーン
ユーザーが国内ネットワーク環境で以下の状況に遭遇した場合に有効:
git clone https://github.com/...が遅い、止まる、Recv failure: 接続がリセットされました、タイムアウト- GitHub サイト / API への直接接続が不安定または完全に遮断されている(
curl https://github.comで 0 バイト) - GitHub リポジトリ、Release ファイル、raw ファイルを一括取得する必要がある
核心的な考え方:github.com へのアクセスを、国内から直接アクセス可能な「加速プレフィックス(ミラープロキシ)」経由に変更し、複数のプレフィックスを自動で切り替え + リトライします。単一のプレフィックスが応答不能になった場合でも処理を止めず、次のプレフィックスに自動で切り替えます。
ワンクリックインストール
# このリポジトリをクローン(利用可能な任意のプレフィックスでまず clone しても可)
git clone https://gh-proxy.com/https://github.com/OWNER/github-ghclone.git
cd github-ghclone
bash scripts/install.sh
source ~/.bashrc # ~/bin を有効化
インストール後に得られるもの:
~/bin/ghclone—— 実行可能スクリプト(3 つのプレフィックスを自動切り替え、各プレフィックスで 3 回リトライ)- git グローバル静的加速
url."https://gh-proxy.com/https://github.com/".insteadOf(通常のgit cloneも直接恩恵を受ける) - git エイリアス
gclone→ghclone
使用方法
# 方法 1:スクリプトを直接呼び出す
ghclone https://github.com/owner/repo.git --depth 1
# 方法 2:git エイリアス
git gclone https://github.com/owner/repo.git --depth 1
# 通常の git コマンド(グローバル加速済み、エイリアス不要)
git clone https://github.com/owner/repo.git
ghclone は自動で現在利用可能なプレフィックスを検出し、成功すれば返し、すべて失敗した場合にのみエラーを出力します。
手動設定(install.sh を実行したくない場合)
- スクリプトをダウンロード(このリポジトリ内の
bin/ghclone)し、~/bin/に配置、chmod +xする。 - git グローバル静的加速(現在利用可能なプレフィックスを 1 つ選択):
git config --global url."https://gh-proxy.com/https://github.com/".insteadOf "https://github.com/" - git エイリアス:
git config --global alias.gclone '!~/bin/ghclone' - PATH:
~/binをPATHに追加(~/.bashrcに追記):export PATH="$HOME/bin:$PATH"
プレフィックスの変更 / 追加 / 削除(特定のプレフィックスが応答しなくなった場合)
加速プレフィックスはコミュニティで維持されるプロキシであり、利用可能なときもあれば利用できないときもあるため、切り替えに対応する必要があります:
~/bin/ghclone(またはこのリポジトリのbin/ghclone)内のPATS=(...)配列を編集し、プレフィックスを追加 / 削除する。- git グローバル静的プレフィックスを変更する:
# 新しい利用可能なプレフィックスに変更 git config --global url."https://新しいプレフィックス/https://github.com/".insteadOf "https://github.com/" # 古いプレフィックスを削除 git config --global --unset url."https://古いプレフィックス/https://github.com/".insteadOf
プレフィックスが利用可能かを確認する
各プレフィックスを使って実際に小さなリポジトリで確認(コミットハッシュが返ってくれば利用可能、0 バイト / エラーなら利用不可):
for p in https://gh-proxy.com https://ghfast.top https://ghproxy.net; do
n=$(git ls-remote "$p/https://github.com/octocat/Hello-World.git" HEAD 2>/dev/null | head -1)
echo "$p -> ${n:-利用不可}"
done
既知の利用可能なプレフィックス(2026-10 時点の実測、随時変化する可能性あり)
| プレフィックス | 使用方法 |
|---|---|
https://gh-proxy.com | https://gh-proxy.com/https://github.com/owner/repo.git |
https://ghfast.top | https://ghfast.top/https://github.com/owner/repo.git |
https://ghproxy.net | https://ghproxy.net/https://github.com/owner/repo.git |
直接
github.comへアクセスすると国内では通常 0 バイト(遮断されている)となるため、必ずプレフィックスを経由してください。プレフィックスサービスは不安定であり、ghcloneのリトライロジックはこのような「接続がリセットされる」瞬間的な障害に対処するためのものです。
制限と注意点
- プレフィックスプロキシはサードパーティのコミュニティサービスであり、可用性、速度、存続期間は制御できません。すべてのプレフィックスが無効になった場合は、新しいプレフィックスを探して
PATSを置き換える必要があります。 - このツールは
github.comへの git プロトコルアクセスのみを高速化します。objects.githubusercontent.com(Release の大きなファイルなど)のサブドメインについても、同様にプレフィックスでラップすることで高速化できます。 - コンプライアンスに関する注意:現地の法令に従ったインターネットアクセス方法を使用してください。