I ran into a situation today, which was quite astonishing: Git creates new repositories in an inconsistent state. Until the first checkin is done, the repository has HEAD pointing to a nonexistent location. I discovered this because I was replicating several other team’s Git servers for backup purposes. In experimenting with this I came up with this reproduction:
$ git init --bare foo.git Initialized empty Git repository in /tmp/foo.git/ $ git clone --bare foo.git foo2.git Cloning into bare repository 'foo2.git'... warning: You appear to have cloned an empty repository. $ cd foo2.git $ git fetch fatal: Couldn't find remote ref HEAD fatal: The remote end hung up unexpectedly
While doing clone and fetch from an empty repository is a silly thing to do, but it isn’t worthy of a fatal error. No other systems I work with have this flaw. So now I have to modify my replication scripts to detect such repositories and avoid them.