CommunityProgramación y desarrollogithub.com

lg0219/github-ghclone

Aceleración para GitHub desde China continental: rotación automática de proxies y reintentos para clone/fetch, con configuración global de git y alias ghclone.

¿Qué es github-ghclone?

Esta habilidad, `github-ghclone`, está diseñada para desarrolladores en China que enfrentan conexiones lentas o interrumpidas con GitHub. Su objetivo principal es evitar fallos como `Recv failure: 连接被对方重置` o timeouts al ejecutar `git clone`, reemplazando la conexión directa a `github.com` por una serie de prefijos de proxy mirror (como `gh-proxy.com`, `ghfast.top`, `ghproxy.net`) que son accesibles localmente. El script `ghclone` implementa un mecanismo de rotación automática y reintentos: prueba cada prefijo en orden y, si uno falla, pasa al siguiente. Si todos fallan, muestra un error. Además, configura automáticamente un alias global de git (`gclone`) y un `insteadOf` estático para que cualquier `git clone` normal se beneficie de la aceleración. Es útil para clonar repositorios, descargar releases o archivos raw, y su instalación es sencilla mediante un script `install.sh`. La habilidad es compatible con cualquier plataforma que soporte git y bash, y su mantenimiento incluye la actualización de la lista de prefijos cuando estos dejan de funcionar.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add lg0219/github-ghclone

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

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.com devuelve 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 normales git clone se 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)

  1. Descarga el script (del repositorio, está en bin/ghclone), colócalo en ~/bin/ y ejecuta chmod +x.
  2. 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/"
    
  3. Alias de git:
    git config --global alias.gclone '!~/bin/ghclone'
    
  4. PATH: Asegúrate de que ~/bin esté 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 en bin/ghclone del 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)

PrefijoUso
https://gh-proxy.comhttps://gh-proxy.com/https://github.com/owner/repo.git
https://ghfast.tophttps://ghfast.top/https://github.com/owner/repo.git
https://ghproxy.nethttps://ghproxy.net/https://github.com/owner/repo.git

La conexión directa a github.com en 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 de ghclone está 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 como objects.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.

Skills relacionados