História curta
Crie um remoto (ou use um existente) e defina seu URL de envio para algo engraçado.
$ git remote add origin-readonly https://url.to/remote.git
$ git remote set-url origin-readonly --push "You shall not push"
Longa história
Se você está usando o git-flow , e eu acho que a maioria de vocês está ou já tentou pelo menos uma vez (se não, recomendo que você leia este artigo ), você provavelmente já esteve nesta situação.
Digamos que você tenha um branch de recurso feature/awesome-feature
, e deseja que ele rastreie o develop
branch remoto para mantê-lo atualizado com as alterações mais recentes sem correr o risco de acidentalmente enviar seu recurso para ele. Configure um controle remoto somente leitura como mostrado na “História curta” , configure-o como o upstream do seu branch de recursos, et voilà.
Faça seu branch rastrear o branch remoto somente leitura que você deseja.
$ git branch feature/awesome-feature -u origin-readonly/develop
Agora você pode extrair as alterações mais recentes develop
, mas não pode empurrar.
$ git pull
$ git push
# Pushing to You shall not push
# fatal: 'You shall not push' does not appear to be a git repository
Observe que você ainda pode usar qualquer controle remoto que desejar, especificando-o explicitamente .
$ git push origin HEAD