Isso é (parcialmente) respondido nesta pergunta: Git: Access Ao controle? Como fazer na prática :
You cannot control by branches or whatever. Git downloads the entire repo. Period.
Isso (sempre baixando o repositório inteiro) é uma decisão fundamental do projeto no git, sem nenhuma maneira de contornar isso.
Se você quiser apenas fornecer acesso de leitura, poderá usar um sistema diferente, por exemplo, tem algum trabalho regular que espelha o arquivo para, e. um servidor web, onde eles podem ser visualizados & baixado.
Se você deseja fornecer acesso de gravação, mas ainda restringir o acesso de leitura a outras partes, provavelmente não há como dividir o repositório (ou implementar algum esquema de sincronização complexo envolvendo vários repos e push & pull).
Se você quiser restringir o acesso de gravação, mas não se importa em dar acesso de leitura a tudo, você pode usar git hooks . Você também pode querer considerar o gitolite :
Gitolite is an access control layer on top of git. Here's an "executive summary":
[...]
control access to many git repositories
read access controlled at the repo level
write access controlled at the branch/tag/file/directory level