/ / Git: Configurar um controle remoto somente de busca? - git, fluxo de trabalho

Git: Configurar um controle remoto somente de busca? - git, fluxo de trabalho

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 № 1

Eu 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.