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

问题描述 投票:0回答:1

我正在尝试学习Git。这是我的Git commit history

我想删除以下松散提交:

  • e4ab7e8
  • 6d93a36
  • 2a604a9
  • f31bf0e

我正在从Git存储库中还原,重新设置基准并对其进行重置。但是无论我做什么,似乎提交历史只会增长。有帮助吗?

git reset rebase revert
1个回答
1
投票

了解这一点的关键是Git完全是关于提交的。每个提交都指向一个或多个父提交(没有父文件的根提交除外)。

分支只是单个提交的“标签”。每次在此分支上创建一个新的提交时,都会移动该标签。通过遵循提交的父点,Git可以重建历史记录。

分支(请记住:标签)也可以手动移动,也可以通过提交旁边的其他操作来移动:合并,重置,重新设置等。>

当提交变为无法到达

(有时是“悬而未决”)时,这意味着不再有ref [^ 1]指向该提交。引用通常是分支(=动态标签)或标签(=静态标签)。

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

reflog中的条目在给定时间段后到期。因此,这些提交现在真的无法到达。 Git将在某些情况下(时间,对象数等)自动运行垃圾收集。当进行垃圾收集时,真正无法到达的提交也将从您的存储库中永久删除。

TLDR:不用担心,它们最终将被删除。

[^ 1]:引用

的缩写
© www.soinside.com 2019 - 2024. All rights reserved.