当我们让git reset --soft时,历史会发生什么?

wkftcu5l  于 2023-04-10  发布在  Git
关注(0)|答案(2)|浏览(110)

当我在提交后检查我的文件时,有时我会发现一些错误。在这种情况下,我总是用git reset --soft HEAD^将文件从提交重置为暂存,修复并再次制作git commit。但我从来没有想过历史文件会发生什么,它会从git reset --soft分支中删除。当我们制作git reset --soft HEAD^时,旧的分支提交会发生什么?

2q5ifsrm

2q5ifsrm1#

git reset --soft HEAD^只将当前分支指针移动到父提交,并保持工作树和索引不变。
它对任何现有的提交都没有任何影响,除了分支指针之前指向的提交可能在没有其他引用的情况下不再可访问,并且最终可能被垃圾收集。
既然您这样做是为了纠正提交中的一个错误,那么这似乎就是您想要的。

0s0u357o

0s0u357o2#

旧的分支提交会发生什么
首先要知道的事实:一个分支只是一个指向提交的名字。提交是可以通过提交的父级链向后 * 到达 * 的。从某个分支(或标签)可到达的所有提交的总和正好构成了你所说的“历史”。
通过将分支指针重置回以前的提交,你可以让“旧分支提交”* 无法从任何分支指针访问 *。无法访问的提交不属于历史记录的一部分。
然而,一个不可达的提交会在repo中保留一段时间(通常是几周),如果需要的话,它可以被检索到。在这种情况下,你可以很容易地通过reflog检索它。
然后,如果它仍然无法访问,它将通过垃圾收集自动删除。

相关问题