implementing git is an interesting approach to learning it.
i generally support this kind of stuff - however I think that this starts out implementing a source control solution rather than git in particular and its a shame that it follows git so closely later down the line in that regard (but completely understandable given the aim).
solving the problems for yourself you can get some insight into why git is the way it is (and svn, p4, hg, everyone else...)
I'm pretty sure the point of the article is to learn about how to use git by implementing its basic functionality. The point isn't to implement how git works.
On a side note, I'm always amazed when someone implements things that are complicated to me in a really understandable ways.
i generally support this kind of stuff - however I think that this starts out implementing a source control solution rather than git in particular and its a shame that it follows git so closely later down the line in that regard (but completely understandable given the aim).
solving the problems for yourself you can get some insight into why git is the way it is (and svn, p4, hg, everyone else...)