Git push se cuelga si no hay nada en refs / heads

Hay muchas publicaciones en SO sobre cómo hacer 'git push' en repositorys grandes donde se obtiene un error como:

the remote end hung up unexpectedly. 

Hay varias razones para que eso ocurra, pero en mi caso evité que sucediera haciendo que ssh enviara un package nulo para mantener viva la connection ssh. Agregué esto a ~ / .ssh / config:

 Host * ServerAliveInterval 30 ServerAliveCountMax 4 

Eso detiene el error del 'extremo remoto colgado inesperadamente', pero lo que veo que sucede entonces es que el idiota se queda allí para siempre.

Si hago un pstack en el process de ejecución de git:

 #13 lock_ref_for_update (err=0x7ffde40f2530, affected_refnames=0x7ffde40f23b0, head_ref=0xc979c0 "refs/heads/master", transaction=0xdd1ef0, update=0x1096e10, refs=0xc98c90) at refs/files-backend.c:2792 #14 files_transaction_commit (ref_store=<optimized out>, transaction=0xdd1ef0, err=0x7ffde40f2530) at refs/files-backend.c:2989 #15 0x00000000004606c9 in execute_commands_non_atomic (si=0x7ffde40f2560, commands=0xc98f80) at builtin/receive-pack.c:1357 #16 execute_commands (push_options=0x7ffde40f24e0, si=0x7ffde40f2560, unpacker_error=0x0, commands=0xc98f80) at builtin/receive-pack.c:1478 #17 cmd_receive_pack (argc=<optimized out>, argv=<optimized out>, prefix=<optimized out>) at builtin/receive-pack.c:1941 #18 0x000000000040600d in run_builtin (argv=0x7ffde40f2e60, argc=2, p=0x7e3e78 <commands+1944>) at git.c:371 #19 handle_builtin (argc=2, argv=0x7ffde40f2e60) at git.c:572 #20 0x0000000000406277 in run_argv (argv=0x7ffde40f2c20, argcp=0x7ffde40f2c2c) at git.c:624 #21 cmd_main (argc=2, argc@entry=3, argv=0x7ffde40f2e60, argv@entry=0x7ffde40f2e58) at git.c:701 #22 0x00000000004054bf in main (argc=3, argv=0x7ffde40f2e58) at common-main.c:43 

La línea importante en el pstack es la primera '# 13', parece estar intentando bloquear 'refs / heads / master', pero si reviso mi repository de git:

 [atlbitbucket@dubengvm494 fw]$ cd refs/heads [atlbitbucket@dubengvm494 heads]$ ll total 0 

¿Es esto un error en git? (versión 2.13) Hubiera pensado que diría algo así como 'repository de git inválido, sin refs founds'. En cambio, permanece bloqueado en este ciclo:

  while (1) { int was_alias = run_argv(&argc, &argv); if (errno != ENOENT) break; if (was_alias) { fprintf(stderr, "Expansion of alias '%s' failed; " "'%s' is not a git command\n", cmd, argv[0]); exit(1); } if (!done_help) { cmd = argv[0] = help_unknown_cmd(cmd); done_help = 1; } else break; }