( lacos | 2025. 07. 29., k – 13:15 )

Minden commit megőrződik

Ez nem így van. A git elvileg bármikor eldobhat minden olyan commit-ot, amely a commit gráfban egyetlen symbolic ref-ből (branch-ből, tag-ből) sem elérhető, parent pointer-ek mentén. Lásd "git gc [--prune]". Ha nem így lenne, akkor a repo-kban a hulladék mennyisége korlátlan lenne; a git-rebase és a non-fast-forward push rengeteg orphan commit-ot generálnak; ezeket időnként el kell takarítani. Természetesen a garbage collection nem azonnali; az nem lenne hasznos.

(Jó példa a késleltetett szemétgyűjtés hasznosságára a "git reflog --date=local BRANCH". Ha elrontasz egy rebase-t, de úgy, hogy be is fejezed (tehát a branch "át is áll"), akkor még egy ideig a branch-et "git reset --hard"-dal vissza tudod irányítani a branch egy korábbi változatára, amit a git-reflog-ból tudsz esetleg kinézni. De a szemétgyűjtés ritkasága nem garantált; elvileg semmi nem zárja ki, hogy egy cron job naponta futtasson a nagy repo-kon git-gc-t.)

A másik ellenvetésem az, hogy a commit hash-ek (az élettartamuktól függetlenül) nem beszédesek; sokkal beszédesebb, ha "feature-v1", "feature-v2" stb hivatkozásaink vannak.

erre csinálhatsz bármikor hookot és megcsinálja automatikusan

Ez mondjuk jó ötlet!; nem gondoltam rá.