Git is a purely functional data structure
jayway.com
jayway.com
It's most interesting property is that it's content-addressable, but still has tons of mutable elements, refs, symbolic refs, config keys, the notes infrastructure (kinda).
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.
Probably a larger portion if the Git repo is --bare.
(Another name for functional data structures are persistent. I've avoided this term not to confuse it with the notion of storage on persistent media like a physical disc.)