Bruk en proxy for ett Git-depot
Sett en depotlokal HTTP-proxy, sjekk konfigurasjonen Git velger for remote-URL-en, og fjern overstyringen når den ikke trengs lenger.
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.