Re: [PATCH] doc: add a explanation of Git's data model
From: D. Ben Knoble <hidden>
Date: 2025-10-07 18:40:06
On Tue, Oct 7, 2025 at 11:51 AM Patrick Steinhardt [off-list ref] wrote:
On Fri, Oct 03, 2025 at 05:34:36PM +0000, Julia Evans via GitGitGadget wrote:
[snip]
quoted
+ A branch is a name for a commit ID. + That commit is the latest commit on the branch. + Branches are stored in the `.git/refs/heads/` directory. ++ +To get the history of commits on a branch, Git will start at the commit +ID the branch references, and then look at the commit's parent(s), +the parent's parent, etc. + +[[tag]] +tags: `.git/refs/tags/<name>`:: + A tag is a name for a commit ID, tag object ID, or other object ID. + Tags are stored in the `refs/tags/` directory. ++ +Even though branches and commits are both "a name for a commit ID", Git +treats them very differently. +Branches are expected to be regularly updated as you work on the branch, +but it's expected that a tag will never change after you create it.This sounds a bit like the user itself needs to update the branch. How about this instead: Even though branches and commits are both "a name for a commit ID", Git treats them very differently: - Branches can be checked out directly. If so, creating a new commit will automatically update the checked-out branch to point to the new commit. - Tags cannot be checked out directly and don't move when creating a new commit. Instead, one can only check out the commit that a branch points to. This is called "detached HEAD", and the effect is that a new commit will not update
missing "the tag." ?