I can reproduce your list of missing files; I've written a make production to generate it. Something extremely odd is happening here. I looked at the first such case, clients/cgilib.h. When I grep for it in my generated nut.fi, I see this: grep -nH -e clients/cgilib.h nut.fi nut.fi:77309:M 100644 :14 clients/cgilib.h nut.fi:9602662:M 100644 :14 clients/cgilib.h nut.fi:10381358:M 100644 :14 clients/cgilib.h Here is what seems actually to be going on: The first instance is initial creation on the master branch. The second and third instances are from branch creations. This reveals a minor bug - I shouldn't be generating duplicate modify ops on branch creation. The key point, though, is that no delete fileop is ever issued for the master branch copy. So why it's not showing up in the checkout is, to say the least, mysterious. git-fast-import is not behaving in the expected way. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> [W]hat country can preserve its liberties, if its rulers are not warned from time to time that [the] people preserve the spirit of resistance? Let them take arms...The tree of liberty must be refreshed from time to time, with the blood of patriots and tyrants. -- Thomas Jefferson, letter to Col. William S. Smith, 1787