I've run your reproduction recipe and also looked at #git log from yesterday. Here is what I see immediately after the initial cvs import: $ git show-branch * [master] Initial revision ! [origin] Initial revision ! [start] Imported sources --- + [start] Imported sources *++ [master] Initial revision And here is what I get immediately after the second one: $ git show-branch * [master] v2.0 ! [origin] v2.0 ! [start] Imported sources --- *+ [master] v2.0 + [start] Imported sources *++ [master^] Initial revision $ git diff --cached --abbrev -r :100644 100644 b8b933b... e251870... M file.txt :100644 100644 b8b933b... e251870... M file1.txt I think what is happening is that cvsimport updates origin and master branch HEAD without updating the working tree. I am not sure what the cvsimport command line you used is intended to do: git cvsimport -v -k -u -m -d $CVSROOT -C git/ src Specifically, what branch, if any, is used as the "tracking branch" (i.e. stores the unmodified copy from CVS)? I presume it is "origin", in which case, I would have expected to see something like this instead. $ git show-branch * [master] Initial revision ! [origin] v2.0 ! [start] Imported sources --- + [origin] v2.0 + [start] Imported sources *++ [master^] Initial revision $ git diff --cached --abbrev -r (empty) Then I would understand what cvsimport author means by "it does not do fast forward, you have to do it yourself". What it means is that the import only updates the tracking branch but does not update your working tree; merging the updates to the tracking branch made from the foreign SCM into your working branch is left for you to perform whenever it is convenient for you to do (meaning, you may have some intermediate change in your master branch in which case you would first commit them first and then merge from CVS). And if that is they way cvsimport is intended to be used, then you would at this point do: $ git pull . origin to do the fast forward. I do not understand what cvsimport is trying to do here; I _suspect_ the part that updates the "master" branch head might be a bug. Smurf, mind clarifying what is happening here for me please? - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html