A complete copy of the project's files kept in a separate directory
A lightweight movable pointer (reference) to a commit✓Correct answer
A tag that permanently marks a release commit
A separate clone of the repository stored on the server
Explanation
A branch is just a named reference to a commit, stored as a tiny reference in the repository's ref storage (a loose file under .git/refs/heads/, an entry in packed-refs, or a reftable record); it moves forward automatically as you make new commits on it. Nothing is copied — all branches share the same object store. A tag also points to a commit but is not meant to move, which is the key difference from a branch.