GitHub GHClone - Habilidad de Aceleración de GitHub para China
Escenarios de Uso
Activar cuando el usuario en la red de China encuentre las siguientes situaciones:
git clone https://github.com/...lento, se queda colgado,Recv failure: 连接被对方重置, timeout- Conexión directa a la web/API de GitHub inestable o completamente bloqueada (
curl https://github.comdevuelve 0 bytes) - Necesidad de clonar múltiples repositorios de GitHub, descargar archivos Release o archivos raw
Idea central: redirigir el acceso a github.com a través de «prefijos de aceleración (proxy mirror)» accesibles localmente en China, e implementar rotación automática + reintentos para múltiples prefijos. Si un prefijo falla, no se bloquea, se cambia automáticamente al siguiente.
Instalación con un solo comando
# Clona este repositorio (también puedes usar cualquier prefijo disponible)
git clone https://gh-proxy.com/https://github.com/OWNER/github-ghclone.git
cd github-ghclone
bash scripts/install.sh
source ~/.bashrc # Para que ~/bin esté disponible
Después de la instalación obtienes:
~/bin/ghclone— script ejecutable (rota automáticamente entre 3 prefijos, cada prefijo se reintenta 3 veces)- Aceleración estática global de git con
url."https://gh-proxy.com/https://github.com/".insteadOf(los comandos normalesgit clonese benefician directamente) - Alias de git
gclone→ghclone
Uso
# Modo 1: Llamar directamente al script
ghclone https://github.com/owner/repo.git --depth 1
# Modo 2: Alias de git
git gclone https://github.com/owner/repo.git --depth 1
# Comando normal de git (ya acelerado globalmente, sin alias necesario)
git clone https://github.com/owner/repo.git
ghclone detecta automáticamente qué prefijo está disponible actualmente, devuelve el resultado si tiene éxito, y solo muestra un error si todos fallan.
Configuración manual (si no quieres ejecutar install.sh)
- Descarga el script (del repositorio, está en
bin/ghclone), colócalo en~/bin/y ejecutachmod +x. - Aceleración estática global de git (elige un prefijo actualmente disponible):
git config --global url."https://gh-proxy.com/https://github.com/".insteadOf "https://github.com/" - Alias de git:
git config --global alias.gclone '!~/bin/ghclone' - PATH: Asegúrate de que
~/binesté en el PATH (agrégalo a~/.bashrc):export PATH="$HOME/bin:$PATH"
Cambiar / Añadir o eliminar prefijos (cuando un prefijo falla)
Los prefijos de aceleración son proxies mantenidos por la comunidad, a veces funcionan, a veces no, por lo que es necesario poder rotarlos:
- Modifica el array
PATS=(...)en~/bin/ghclone(o enbin/ghclonedel repositorio), añadiendo o eliminando prefijos. - Cambia el prefijo estático global de git:
# Cambia al nuevo prefijo disponible git config --global url."https://nuevo-prefijo/https://github.com/".insteadOf "https://github.com/" # Elimina el prefijo antiguo git config --global --unset url."https://antiguo-prefijo/https://github.com/".insteadOf
Verificar si un prefijo está disponible
Para cada prefijo, ejecuta una prueba con un repositorio pequeño real (devuelve el hash del commit si está disponible, 0 bytes o error si no):
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:-No disponible}"
done
Prefijos conocidos disponibles (probados en 2026-10, pueden cambiar en cualquier momento)
| Prefijo | Uso |
|---|---|
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 |
La conexión directa a
github.comen China normalmente devuelve 0 bytes (bloqueado), por lo que es imprescindible usar un prefijo. Los servicios de prefijo son inestables; la lógica de reintentos deghcloneestá diseñada para manejar fallos transitorios como «conexión reiniciada por el otro extremo».
Limitaciones y advertencias
- Los proxies de prefijo son servicios de terceros de la comunidad; su disponibilidad, velocidad y tiempo de vida son incontrolables. Si todos fallan, es necesario buscar nuevos prefijos para reemplazar
PATS. - Solo acelera el acceso al protocolo git de
github.com; subdominios comoobjects.githubusercontent.com(archivos grandes de Release) también pueden beneficiarse envolviéndolos con un prefijo. - Aviso de cumplimiento: asegúrate de utilizar métodos de acceso a Internet que cumplan con las regulaciones locales.