In internet terms: It's just a soyjak holding a box with data who is pointing at another soyjak holding a box with data who is pointing at another {insert N-3 of the same soyjaks} soyjak with a box with data without an arm to point with
each commit points to the one before. additionally a commit stores which lines in which files changed compared to the previous commit. a branch points to a particular commit.
There's a guy out there who made a reversible NES emulator, meaning it can run games backwards and come to the correct state. He made a brilliant post on Reddit /r/programming linking his ideas for the emulator to quantum mechanics.
Then he was asked why he didn't distribute his program in git. He said that he didn't know git.
To me, that's a pretty good example of the difference between computer science and software engineering.