GitHub GHClone - Compétence d'accélération GitHub pour la Chine
Cas d'utilisation
Activez cette compétence lorsque l'utilisateur rencontre les situations suivantes dans un réseau chinois :
git clone https://github.com/...lent, bloqué,Recv failure: connexion réinitialisée par l'autre extrémité, timeout- Accès direct à la page web / API GitHub instable ou complètement bloqué (
curl https://github.com0 octet) - Nécessité de cloner en masse des dépôts GitHub, des fichiers Release ou des fichiers bruts
Idée centrale : rediriger l'accès à github.com via des « préfixes d'accélération (proxy miroir) » accessibles depuis la Chine, avec rotation automatique et réessai sur plusieurs préfixes. Si un préfixe tombe, le script passe automatiquement au suivant sans bloquer.
Installation en une commande
# Clonez ce dépôt (vous pouvez d'abord utiliser n'importe quel préfixe disponible)
git clone https://gh-proxy.com/https://github.com/OWNER/github-ghclone.git
cd github-ghclone
bash scripts/install.sh
source ~/.bashrc # Pour activer ~/bin
Après installation, vous obtenez :
~/bin/ghclone— script exécutable (rotation automatique de 3 préfixes, 3 tentatives par préfixe)- Redirection statique globale git
url."https://gh-proxy.com/https://github.com/".insteadOf(tous lesgit cloneclassiques en bénéficient directement) - Alias git
gclone→ghclone
Utilisation
# Méthode 1 : appel direct du script
ghclone https://github.com/owner/repo.git --depth 1
# Méthode 2 : alias git
git gclone https://github.com/owner/repo.git --depth 1
# Commande git normale (déjà accélérée globalement, pas besoin d'alias)
git clone https://github.com/owner/repo.git
ghclone détecte automatiquement quel préfixe est actuellement disponible, retourne le résultat dès qu'il réussit, et signale une erreur uniquement si tous échouent.
Configuration manuelle (si vous ne voulez pas exécuter install.sh)
- Téléchargez le script (fourni dans ce dépôt sous
bin/ghclone), placez-le dans~/bin/etchmod +x. - Redirection statique globale git (choisissez un préfixe actuellement disponible) :
git config --global url."https://gh-proxy.com/https://github.com/".insteadOf "https://github.com/" - Alias git :
git config --global alias.gclone '!~/bin/ghclone' - PATH : assurez-vous que
~/binest dans votrePATH(ajoutez à~/.bashrc) :export PATH="$HOME/bin:$PATH"
Changer / ajouter / supprimer des préfixes (lorsqu'un préfixe tombe)
Les préfixes d'accélération sont des proxies maintenus par la communauté, parfois disponibles, parfois non ; il faut pouvoir les faire pivoter :
- Modifiez le tableau
PATS=(...)dans~/bin/ghclone(oubin/ghclonede ce dépôt) pour ajouter ou supprimer des préfixes. - Modifiez la redirection statique globale git :
# Remplacez par un nouveau préfixe disponible git config --global url."https://nouveau-préfixe/https://github.com/".insteadOf "https://github.com/" # Supprimez l'ancien préfixe git config --global --unset url."https://ancien-préfixe/https://github.com/".insteadOf
Vérifier si un préfixe est disponible
Exécutez une vérification réelle sur un petit dépôt pour chaque préfixe (retourne un hash de commit si disponible, 0 octet/erreur si indisponible) :
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:-Indisponible}"
done
Préfixes connus disponibles (testés en octobre 2026, susceptibles de changer à tout moment)
| Préfixe | Utilisation |
|---|---|
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 |
L'accès direct à
github.comfait généralement 0 octet en Chine (bloqué), il est impératif de passer par un préfixe. Les services de préfixe sont instables : la logique de réessai deghcloneest conçue pour gérer ces pannes temporaires du type « connexion réinitialisée par l'autre extrémité ».
Limites et précautions
- Les proxies préfixes sont des services tiers communautaires ; leur disponibilité, vitesse et durée de vie sont incontrôlables ; si tous échouent, vous devrez trouver de nouveaux préfixes pour remplacer
PATS. - Cela accélère uniquement l'accès au protocole git de
github.com; les sous-domaines commeobjects.githubusercontent.com(gros fichiers Release) peuvent également être enveloppés avec un préfixe de la même manière. - Avis de conformité : assurez-vous d'utiliser des moyens de sortie réseau conformes à la réglementation locale.