¿Una forma de mantener un clon de git poco profundo solo mínimamente actualizado?

Mi objetivo es poder construir versiones recientes y contribuir a un proyecto que tenga una historia larga y voluminosa, y hacerlo sin usar el almacenamiento local para duplicar muchas ramas históricas e historia que se remonta a una década o más ( que siempre puedo buscar en la interfaz de usuario web del repositorio central del proyecto de todos modos, si alguna vez lo necesito, lo cual probablemente no lo haré).

Parece que tuve suerte con mi primer intento:

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

Eso me dio un clon local ordenado de 'qué' que solo tenía el 'master'branch, y suficientes confirmaciones para cubrir los dos lanzamientos etiquetados más recientes.
Entonces podría hacer 'git checkout latest-release-tag'y compila la última versión. Yippee!

Como esperaba, necesitaba hacer un parche. Todo salió a la perfección: 'git checkout -b my-patch-branch', realicé mis cambios, me comprometí y pude hacer que my-patch-branch volviera a un clon en github para que el proyecto pudiera sacarlo. ¡Fácil!
Creo que tuve suerte allí porque, por lo que leí, por ejemplo,aquí, No hubiera podido hacer eso antes de git 1.9.
Pero la versión instalada resultó ser 1.9, así que me salí con la suya.

Ahora La siguiente cosa obvia que me gustaría hacer es buscar desde el control remoto y recoger la actividad más reciente en el maestro (incluida la fusión ascendente de mi parche, por lo que ya no necesitaré esa rama). Intenté 'git fetch --dry-run upstream' y vi con horror cómo marcaba interminables megabytes de descarga y luego me dio una lista de nuevas etiquetas que se remontan a la era de los mastodontes. Me alegro de haber dicho--dry-run!

Realmente esperaba que solo recogiera la docena de nuevos compromisos en 'master'desde la CABEZA de mi clon, y luego tal vez tendría un clon de profundidad 52 en lugar de 40, pero eso es lo que quiero ... comenzar con una cantidad útil de historia reciente antes de involucrarme, luego simplemente rastrear y crecer desde ese punto y ser capaz de construir, ramificar y empujar parches. Parece muy cerca

¿Hay alguna manera simple de hacer que git haga lo que estoy tratando de hacer? ¿Es irracional lo que estoy tratando de hacer?

Editar: un poco más de información.
(1) el flujo ascendente está realmente delante de mí por cerca de cien confirmaciones, mi estimación de una docena fue sacada del aire.
(2) Resulta que los 40 commits originales que obtuve con mi clon eran todos commits monoparentales. Un montón de los últimos que estoy tratando de recuperar son commits de fusión con un segundo padre en alguna rama que mi clon no incluyó. ¿Podrían estar causando que git atraiga toda su historia antigua porque el primer compromiso en mi clon no es un antepasado común?
¿Hay alguna manera de decir que no quiero eso?

Más información nueva:
(1) se me ocurrió que estaba usando el protocolo http anteriormente, que en realidad no interactúa con un proceso git en el servidor, por lo que no tiene la oportunidad de adaptar el tamaño de descarga.
Sin embargo, cuando volví a intentar usar git-over-ssh, todavía obtuve una gran recuperación.
Entonces
(2) manualmente, como un animal, hice clic en las confirmaciones de fusión que se muestran en la pantalla de 'newtork' de github, encontré las que involucraban ramas que comenzaron antes de mi corte superficial, y agregué sus SHA primarios-2 a mi.git/shallow archivo yentonces Intenté 'git fetch' sobre ssh nuevamente. Eso funcionó muy bien y descargó un pequeño paquete de archivos que podría adelantar mi localmaster rama. Creo que esta es exactamente la operación que me gustaría que git pudiera hacer automáticamente, pero no he encontrado la manera de hacerlo. Manualmente, es bastante tedioso. :)

Respuestas a la pregunta(1)

Su respuesta a la pregunta