Du trenger ikke en global Git-proxy bare fordi ett prosjekt trenger en annen forbindelse. En eksisterende arbeidskopi har egen lokal konfigurasjon, så endringen kan holdes i det depotet.

Eksemplene bruker de gjeldende git config set/get/unset-kommandoene. Prosjektmappen, remote-URL-en og dokumentasjons-IP-en er plassholdere. For en test av et offentlig depot der offentlige proxyer er tillatt, velg en kandidat fra listen over 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 inneholder transportskjemaet. Et HTTPS-remote kan bruke en vanlig HTTP-proxy som støtter CONNECT; HTTPS-skjemaet til remote-adressen krever ikke at proxy-URL-en endres til HTTPS.

Sjekk hva Git faktisk valgte

Er resultatet uventet, sjekk verdien som er valgt for den faktiske remote-URL-en:

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

Bruk ditt virkelige HTTPS-remote i spørringen. Git kan ha system-, bruker-, depot-, kommandolinje- og URL-spesifikke innstillinger. Ser du bare på en global http.proxy-verdi, kan du overse en mer spesifikk regel. Opprinnelsesutskriften hjelper med å finne filen eller kommandolinjekilden bak resultatet.

Den lokale innstillingen gjelder HTTP-basert tilgang fra depotet, ikke bare en bestemt gren. Et depot med flere HTTP-remotes kan derfor bruke den for flere enn det først testede. URL-spesifikke HTTP-innstillinger finnes om du trenger snevrere samsvar.

Før arbeidskopien finnes

For den første kloningen, velg om overstyringen skal vare; for å begrense den til det Git-kallet, bruk:

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

Kommandolinjeoverstyringen blir ikke av seg selv en varig oppføring i den nye arbeidskopien. Sett en lokal verdi etterpå om senere fetch-operasjoner skal bruke den ruten.

Et SSH-remote er et annet tilfelle

Et remote som starter med git@host: eller ssh://, bruker SSH. HTTP-proxyinnstillingen i Git gjør det ikke til en HTTP-overføring. Sjekk transporten til remote-adressen før du bytter en fungerende proxy-IP bare fordi en SSH-operasjon fortsatt feiler.

Når den lokale overstyringen ikke lenger er ønsket, fjern bare den nøkkelen:

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

Da kommer aktuell konfigurasjon fra andre kilder til bruk igjen. Dette er ikke en kommando som sletter alle proxyinnstillinger på maskinen.

Relaterte artikler