GitHub GHClone - Beschleunigungs-Fähigkeit für GitHub (CN-Netzwerk)
Anwendungsszenarien
Diese Fähigkeit wird aktiviert, wenn der Benutzer im chinesischen Festlandnetz auf folgende Probleme stößt:
git clone https://github.com/...ist langsam, bleibt hängen, zeigtRecv failure: Verbindung vom Gegenüber zurückgesetztoder Timeouts an.- Direkte GitHub-Webseiten-/API-Verbindungen sind instabil oder vollständig blockiert (
curl https://github.comliefert 0 Bytes). - Batch-Downloads von GitHub-Repositories, Release-Dateien oder Raw-Dateien sind erforderlich.
Kernidee: Der Zugriff auf github.com wird über lokal erreichbare „Beschleunigungspräfixe“ (Mirror-Proxys) umgeleitet, mit automatischer Rotation + Wiederholung für mehrere Präfixe. Wenn ein einzelnes Präfix ausfällt, bleibt der Vorgang nicht hängen, sondern wechselt automatisch zum nächsten.
Ein-Klick-Installation
# Klone dieses Repository (verwende gegebenenfalls ein verfügbares Präfix, um es zuerst zu ziehen)
git clone https://gh-proxy.com/https://github.com/OWNER/github-ghclone.git
cd github-ghclone
bash scripts/install.sh
source ~/.bashrc # Aktiviere ~/bin
Nach der Installation erhältst du:
~/bin/ghclone– ausführbares Skript (automatische Rotation von 3 Präfixen, 3 Wiederholungen pro Präfix)- Git globalen statischen Alias
url."https://gh-proxy.com/https://github.com/".insteadOf(normalegit clone-Befehle profitieren direkt) - Git-Alias
gclone→ghclone
Verwendung
# Methode 1: Direkter Skriptaufruf
ghclone https://github.com/owner/repo.git --depth 1
# Methode 2: Git-Alias
git gclone https://github.com/owner/repo.git --depth 1
# Normale Git-Befehle (bereits global beschleunigt, kein Alias nötig)
git clone https://github.com/owner/repo.git
ghclone erkennt automatisch, welches Präfix aktuell verfügbar ist. Bei Erfolg wird das Ergebnis zurückgegeben; nur wenn alle fehlschlagen, wird ein Fehler ausgegeben.
Manuelle Konfiguration (falls install.sh nicht ausgeführt werden soll)
- Skript herunterladen (im Repository unter
bin/ghclone), in~/bin/ablegen und mitchmod +xausführbar machen. - Git globalen statischen Alias (wähle ein aktuell verfügbares Präfix):
git config --global url."https://gh-proxy.com/https://github.com/".insteadOf "https://github.com/" - Git-Alias:
git config --global alias.gclone '!~/bin/ghclone' - PATH: Stelle sicher, dass
~/binimPATHist (in~/.bashrchinzufügen):export PATH="$HOME/bin:$PATH"
Präfixe ändern / hinzufügen / entfernen (falls ein Präfix ausfällt)
Beschleunigungspräfixe werden von der Community betrieben und sind mal verfügbar, mal nicht – Rotation ist notwendig:
- Ändere das Array
PATS=(...)in~/bin/ghclone(oder im Repositorybin/ghclone), um Präfixe hinzuzufügen oder zu entfernen. - Ändere den globalen statischen Git-Alias:
# Ersetze mit einem neuen verfügbaren Präfix git config --global url."https://neues-präfix/https://github.com/".insteadOf "https://github.com/" # Entferne altes Präfix git config --global --unset url."https://altes-präfix/https://github.com/".insteadOf
Präfixverfügbarkeit prüfen
Führe für jedes Präfix einen Test-Repository-Ls-Remote durch (gibt einen Commit-Hash zurück, wenn verfügbar; 0 Bytes/Fehler, wenn nicht verfügbar):
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:-Nicht verfügbar}"
done
Bekannte verfügbare Präfixe (Stand Oktober 2026 getestet – können sich jederzeit ändern)
| Präfix | Verwendung |
|---|---|
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 |
Direkte Verbindungen zu
github.comliefern im chinesischen Festlandnetz meist 0 Bytes (blockiert); verwende daher auf jeden Fall ein Präfix. Präfixdienste sind instabil – die Wiederholungslogik vonghclonewurde entwickelt, um solche „Verbindung zurückgesetzt“-Fehler abzufangen.
Einschränkungen und Hinweise
- Präfix-Proxys sind Community-Dienste von Drittanbietern; Verfügbarkeit, Geschwindigkeit und Lebensdauer sind nicht kontrollierbar. Falls alle ausfallen, müssen neue Präfixe gesucht und in
PATSersetzt werden. - Beschleunigt nur den Git-Protokollzugriff auf
github.com. Subdomains wieobjects.githubusercontent.com(Release-Großdateien) können ebenfalls mit einem Präfix umschlossen werden. - Compliance-Hinweis: Stelle sicher, dass die verwendeten Methoden den lokalen gesetzlichen Bestimmungen entsprechen.