Parece que você está pedindo um novo recurso. O Git é de código aberto, para que você possa aprimorá-lo da maneira que quiser:
link
Você pode puxar o código-fonte. Eu vejo que os comandos são definidos sob uma matriz chamada comandos [] inside git.c. E a correspondência parece ser feita dentro da seguinte função:
static struct cmd_struct *get_builtin(const char *s)
{
int i;
for (i = 0; i < ARRAY_SIZE(commands); i++) {
struct cmd_struct *p = commands + i;
if (!strcmp(s, p->cmd))
return p;
}
return NULL;
}
Você pode modificar a linha de strcmp () para fazer sua correspondência de prefixo mínimo. Eu acho que não deve demorar mais de 20 linhas de código.