当我们使用交互式 rebase 时,原始提交会发生什么?

What happens to the original commits when we use interactive rebase?

我正在尝试交互式变基。假设我有一个线性主分支有 6 个提交并且 HEAD 在第 6 个提交上,并且我 运行 git rebase -i HEAD~4 然后它允许我 pick/edit/split/squash HEAD 和最后 3 次提交。

一旦我执行了任何操作并完成了变基操作,它就会重播 HEAD~4 顶部的提交。现在,它们有了新的提交 ID,并且头部指向最近的(选择的)提交。

我想知道原始提交到底发生了什么?它们是否已删除,是否可以检索?

当一个提交不再被分支或标签引用时,它通常仍然在 reflog

但是当 reflog 被清除并且提交没有被引用时 根本,然后它成为垃圾收集的候选者,并最终被删除,这取决于你的 gc config.