While most users see the directory that contains their code as their "repository" that's not technically true... That's what git calls the "working copy" and from git's perspective it is no more that a device for the user to make the handling of the "real" repository, which lives in the .git directory next to your code, more intuitive.
Besides the working copy users usually interact with the "porcellain"-commands with their repository; read "user interface outside of the wall". These are your git commit, git checkout, git rebase, etc. But they are merely a façade! They in turn talk to git using the "plumbing"-commands; read "technical foundation behind the wall, that acually gets stuff done!" Here we enter the realm of commands like git hash-object, git mktree, etc.
Just like most "users" of a bathroom will only interact with faucets, tubs, sinks & toilet bowls, they all are worth nothing without all the piping, valves, isolation, sink traps etc. which usually either work on thei