$ git init empty-1 $ git init empty-2 $ cd empty-1 $ git fetch ../empty-2 fatal: Couldn't find remote ref HEAD fatal: The remote end hung up unexpectedly But: $ git init empty-1 $ git init empty-2 $ cd empty-1 $ git remote add other ../empty-2 $ git fetch other # this works I haven't spent a lot of time looking into the code, because we can use the second option. But it does seem weird.