Por qué sucede

Si no hubiéramos clonado con --depth 100, la cosa funcionaría así:

$ git fetch --depth 100 origin 10.0
$ git branch --all
* 9.0
  remotes/origin/9.0
  remotes/origin/10.0
  remotes/origin/HEAD -> origin/9.0

Pero al haber clonado con --depth 100, nos encontramos que tras el fetch no existe la rama remota 10.0 que supuestamente hemos descargado:

$ git fetch --depth 100 origin 10.0
$ git branch --all
* 9.0
  remotes/origin/9.0
  remotes/origin/HEAD -> origin/9.0

Esto es así porque clonaste con --depth o con --single-branch (que es implícito al usar --depth), git queda preconfigurado para ignorar cualquier rama remota que no sea la que le indicaste al clonar (o la principal -- normalmente master -- si no le indicaste ninguna).

Cómo solucionarlo

Por lo tanto, si ahora queremos también detectar cambios en la rama remota 10.0, hay que decírselo explícitamente a git:

$ git remote set-branches --add origin 10.0
$ git fetch --depth 100 origin 10.0
$ git branch --all
* 9.0
  remotes/origin/9.0
  remotes/origin/10.0
  remotes/origin/HEAD -> origin/9.0

Tras eso, ya podemos crear una rama local 10.0 que apunte a origin/10.0, que con un comando sería:

$ git checkout --branch 10.0 origin/10.0