Uma maneira de manter um clone raso do Git minimamente atualizado?

Meu objetivo é ser capaz de criar versões recentes de, e contribuir para, um projeto que tenha uma história longa e volumosa - e fazer isso sem usar o armazenamento local para duplicar muitas ramificações históricas e a história que remonta uma década e mais ( que eu sempre posso procurar na interface do usuário da web do repositório central do projeto, se precisar, o que provavelmente não será).

Eu parecia ter sorte com minha primeira tentativa:

git clone --depth 40 -b master http:,//github.com/who/what.git/ what

Isso me deu um clone local organizado de 'o que' que só tinha o 'master', e confirma o suficiente para cobrir os dois lançamentos marcados mais recentes.
Eu poderia então fazer 'git checkout latest-release-tag'e crie a versão mais recente. Yippee!

Como eu esperava, eu precisava fazer um patch. Tudo correu bem: 'git checkout -b my-patch-branch', faça minhas alterações, confirme e eu pude enviar o meu-patch-branch de volta para um clone no github para que o projeto pudesse executá-lo. Fácil!
Acho que tive sorte lá porque, pelo que li, por exemplo,aqui, Eu não teria sido capaz de fazer isso antes do git 1.9.
Mas a versão instalada acabou sendo 1.9, então eu me livrei dela.

Agora a próxima coisa óbvia que eu gostaria de fazer é buscar no controle remoto e pegar a atividade mais recente no master (incluindo a mesclagem upstream do meu patch, para que não precise mais dessa ramificação). Eu tentei 'git fetch --dry-run upstream' e assisti horrorizado, enquanto ele registrava infinitos megabytes de download e depois me deu uma lista de novas tags que remontam à era dos mastodontes. Estou feliz por ter dito--dry-run!

Eu estava realmente esperando que isso ganhasse mais ou menos uma dúzia de novos commits em 'master'desde a CABEÇA do meu clone, e talvez eu tenha um clone de 52 em profundidade em vez de 40, mas é isso que eu quero ... comece com uma quantidade útil de história recente antes de me envolver, então apenas rastreie e crescer a partir desse ponto e ser capaz de criar, ramificar e enviar patches. Parece tão perto.

Existe alguma maneira simples de fazer o git fazer o que estou tentando fazer? O que estou tentando fazer é irracional?

Edit: um pouco mais de informação.
(1) o upsteam está realmente à minha frente perto de cem commits, minha estimativa de uma dúzia foi retirada do ar.
(2) verifica-se que as 40 confirmações originais que obtive com meu clone foram todas confirmações monoparentais. Muitos dos últimos que estou tentando buscar são confirmados por mesclagem com um segundo pai em algum ramo que meu clone não incluiu. Eles poderiam estar causando o git a puxar toda a sua história antiga, porque o primeiro commit no meu clone não é um ancestral comum?
Existe uma maneira de dizer que eu não quero isso?

Mais informações novas:
(1) me ocorreu que eu estava usando o protocolo http anteriormente, que na verdade não interage com um processo git no servidor, por isso não tem oportunidade de personalizar o tamanho do download.
No entanto, quando tentei usar o git-over-ssh, ainda obtive uma grande procura.
Então
(2) manualmente, como um animal, cliquei nos commits de mesclagem mostrados na tela 'newtork' do github, encontrei aqueles que envolviam galhos que começavam antes do meu corte raso e adicionei seus SHAs pai-2 aos meus.git/shallow arquivo eentão tentei 'git buscar' sobre ssh novamente. Isso funcionou muito bem e baixou um pequeno arquivo de pacote que poderia avançar rapidamente meu localmaster ramo. Eu acho que essa é exatamente a operação que eu gostaria que o git fosse capaz de fazer automaticamente, mas não encontrei uma maneira de fazer isso. Manualmente, é bem entediante. :)

questionAnswers(1)

yourAnswerToTheQuestion