When the post makes an argument that Git _is_ a functional data structure, this refers to a mental model of how to think about git.
Of course there are mutable elements, such as branch pointers etc. Also, a functional data structure also does non-functional tings underneath, such as modifying references. The important thing to note is that it provides a _view_ that can be thought of as immutable and functional.