我完全不知道如何删除 Git 中的松散提交

I am completely lost in how to delete a loose commit in Git

我正在努力学习Git。这是我的 Git commit history

我想删除以下松散提交:

我正在对我的 Git 存储库进行还原、变基和重置。但无论我做什么,提交历史似乎只会增长。有帮助吗?

理解这一点的关键是 Git 就是提交。每个提交都指向一个或多个父提交(没有父提交的根提交除外)。

分支只是 "labels" 一次提交。每次移动此标签,您都会在此分支上创建一个新的提交。通过跟踪父提交点,Git 可以重建历史记录。

分支(记住:标签)也可以手动移动,也可以通过提交以外的其他操作移动:合并、重置、变基等

当提交变为 无法访问(有时 "dangling")时,这意味着不再有 ref[^1] 指向该提交。 ref 通常是分支(=动态标签)或标签(=静态标签)。

Git 不会立即删除悬空提交,而是将它们留在本地存储库中。这允许您返回到以前的状态,以防您搞砸了。正如您所发现的,您的分支的旧状态存储在 reflog 中。 reflog 维护所有先前签出的提交的列表。

reflog 中的条目在给定时间段后过期。因此,提交现在真的无法访问。 Git 会在特定情况下(时间、对象数量等)自动运行 进行垃圾回收。垃圾收集时,真正无法访问的提交也将从您的存储库中永久删除。

TLDR:别担心,它们最终会被移除。

[^1]:reference

的缩写