Quando eu corro git remote -v
em um dos meus repositórios Git que possui um (s) controle (s) remoto (s), vejo que cada controle remoto possui as especificações de busca e envio:
$ git remote -v
<remote-name> ssh://host/path/to/repo (fetch)
<remote-name> ssh://host/path/to/repo (push)
Para remotos que apontam para os desenvolvedores de pares, hánão há necessidade de push, e o Git se recusará a empurrar para um repositório não-nu de qualquer maneira. Existe alguma maneira de configurar esses controles remotos como "somente busca" sem nenhum endereço de envio ou recursos?
Respostas:
133 para resposta № 1Eu não acho que você pode remover o URL push, você só pode sobrepor para ser algo diferente do URL de pull. Então eu acho que o mais próximo que você vai chegar é algo assim:
$ git remote set-url --push origin no-pushing
$ git push
fatal: "no-pushing" does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Você está configurando o URL push para no-pushing
, que, desde que você não tenha uma pasta com o mesmo nome em seu diretório de trabalho, o git não poderá localizar. Você está essencialmente forçando o git a usar um local que não existe.
4 para resposta № 2
A declaração geral "Git se recusará a empurrar paraum repositório não-nítido "não é verdadeiro. O Git só se recusará a enviar para um repositório remoto não-nu se você estiver tentando enviar mudanças que estão na mesma ramificação que o diretório de trabalho de saída do repositório remoto.
Esta resposta dá uma explicação simples: https://stackoverflow.com/a/2933656/1866402
(Eu estou adicionando isso como uma resposta, porque eu não tenho reputação suficiente para adicionar comentários ainda)
3 para resposta № 3
Além de alterar o URL push para algo inválido (por exemplo, git remote set-url --push origin DISABLED
), também é possível usar o pre-push
gancho.
Uma maneira rápida de parar git push
é fazer symlink /usr/bin/false
ser o gancho:
$ ln -s /usr/bin/false .git/hooks/pre-push
$ git push
error: failed to push some refs to "..."
Usar um gancho permite um controle mais refinado dos impulsos, se desejável. Vejo .git/hooks/pre-push.sample
para um exemplo de como evitar o envio de confirmações de trabalho em andamento.
1 para resposta № 4
Se você tiver controle sobre o repositório, poderá conseguir isso usando permissões. O usuário que está buscando o repositório não deve ter permissões de gravação no repositório principal.