Você não precisa de um proxy Git global só porque um projeto exige uma conexão diferente. Um checkout existente tem sua própria configuração local, então a mudança pode ficar nesse repositório.

Estes exemplos usam os comandos atuais git config set/get/unset. O diretório do projeto, a URL remota e o IP de documentação são exemplos a substituir. Para um teste de repositório público em que proxies públicos sejam permitidos, escolha um candidato da lista de proxies HTTP.

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

A URL do proxy inclui seu esquema de transporte. Um remoto HTTPS pode usar um proxy HTTP comum com suporte a CONNECT; o esquema HTTPS do remoto não exige mudar a URL do proxy para HTTPS.

Confira o que o Git realmente selecionou

Se o resultado for inesperado, confira o valor escolhido para a URL remota real:

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

Use seu remoto HTTPS real nessa consulta. O Git pode ter configurações de sistema, usuário, repositório, linha de comando e específicas de URL. Olhar só um valor global http.proxy pode deixar passar uma regra mais específica. A saída de origem ajuda a identificar o arquivo ou a fonte de linha de comando por trás do resultado.

O ajuste local vale para o acesso HTTP a partir daquele repositório, não apenas para uma branch. Um repositório com vários remotos HTTP pode, portanto, usá-lo para outros além do testado primeiro. Há configurações HTTP específicas de URL se você precisar de uma correspondência mais restrita.

Antes de o checkout existir

No clone inicial, decida se a substituição deve persistir; para limitá-la àquela chamada do Git, use:

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

A substituição de linha de comando não se torna sozinha uma entrada permanente no novo checkout. Configure depois um valor local se os próximos fetches precisarem usar essa rota.

Um remoto SSH é um caso diferente

Um remoto que começa com git@host: ou ssh:// usa SSH. A configuração de proxy HTTP do Git não o transforma em transferência HTTP. Confira o transporte do remoto antes de trocar um IP de proxy funcional só porque uma operação SSH continua falhando.

Quando não quiser mais a substituição local, remova apenas essa chave:

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

Removê-la faz voltar a valer a configuração aplicável de outras fontes. Não é um comando para apagar todas as configurações de proxy da máquina.

Artigos relacionados