Du behöver ingen global Git-proxy bara för att ett projekt behöver en annan anslutning. En befintlig arbetskopia har egen lokal konfiguration, så ändringen kan stanna i det arkivet.

Exemplen använder de aktuella git config set/get/unset-kommandona. Projektkatalogen, remote-URL:en och dokumentations-IP:n är platshållare. För ett test av ett offentligt arkiv där offentliga proxyer är tillåtna, välj en kandidat från listan över HTTP-proxyer.

git -C project config set --local http.proxy http://203.0.113.10:8080
git -C project ls-remote origin

Proxy-URL:en innehåller transportschemat. En HTTPS-remote kan använda en vanlig HTTP-proxy med CONNECT-stöd; remotens HTTPS-schema kräver inte att proxy-URL:en ändras till HTTPS.

Kontrollera vad Git faktiskt valde

Om resultatet är oväntat, granska värdet som valdes för den verkliga remote-URL:en:

git -C project config get --show-origin \
  --url=https://example.com/team/project.git http.proxy

Använd din riktiga HTTPS-remote i frågan. Git kan ha system-, användar-, arkiv-, kommandorads- och URL-specifika inställningar. Att bara titta på ett globalt http.proxy-värde kan missa en mer specifik regel. Ursprungsutskriften hjälper att identifiera filen eller kommandoradskällan bakom resultatet.

Den lokala inställningen gäller HTTP-baserad åtkomst från arkivet, inte bara en viss gren. Ett arkiv med flera HTTP-remotes kan därför använda den för fler än den först testade. URL-specifika HTTP-inställningar finns om du behöver snävare matchning.

Innan arbetskopian finns

För den första kloningen, välj om åsidosättningen ska finnas kvar; för att begränsa den till detta Git-anrop använder du:

git -c http.proxy=http://203.0.113.10:8080 \
  clone https://example.com/team/project.git

Kommandoradsåsidosättningen blir inte av sig själv en permanent post i den nya arbetskopian. Ange ett lokalt värde efteråt om senare fetch-operationer ska använda rutten.

En SSH-remote är ett annat fall

En remote som börjar med git@host: eller ssh:// använder SSH. Gits HTTP-proxyinställning gör den inte till en HTTP-överföring. Kontrollera remotens transport innan du byter ut en fungerande proxy-IP bara för att en SSH-operation fortfarande misslyckas.

När den lokala åsidosättningen inte längre önskas, ta bara bort den nyckeln:

git -C project config unset --local http.proxy

Då får tillämplig konfiguration från andra källor effekt igen. Detta är inte ett kommando som raderar alla proxyinställningar på datorn.

Relaterade artiklar