我正在尝试学习Git。这是我的Git commit history
我想删除以下松散提交:
我正在从Git存储库中还原,重新设置基准并对其进行重置。但是无论我做什么,似乎提交历史只会增长。有帮助吗?
了解这一点的关键是Git完全是关于提交的。每个提交都指向一个或多个父提交(没有父文件的根提交除外)。
分支只是单个提交的“标签”。每次在此分支上创建一个新的提交时,都会移动该标签。通过遵循提交的父点,Git可以重建历史记录。
分支(请记住:标签)也可以手动移动,也可以通过提交旁边的其他操作来移动:合并,重置,重新设置等。>
当提交变为无法到达
(有时是“悬而未决”)时,这意味着不再有ref [^ 1]指向该提交。引用通常是分支(=动态标签)或标签(=静态标签)。Git不会立即删除悬空的提交,而是将它们保留在本地存储库中。如果您搞砸了,这可以让您返回到先前的状态。您已经发现分支的旧状态存储在reflog中。 reflog维护所有先前检出的提交的列表。
reflog中的条目在给定时间段后到期。因此,这些提交现在真的无法到达。 Git将在某些情况下(时间,对象数等)自动运行垃圾收集。当进行垃圾收集时,真正无法到达的提交也将从您的存储库中永久删除。
TLDR:不用担心,它们最终将被删除。
[^ 1]:引用
的缩写