当我在提交后检查我的文件时,有时我会发现一些错误。在这种情况下,我总是将文件从提交重置为git reset --soft HEAD^
,修复并再次制作git commit
。但是我从来没有想过历史文件会发生什么,这些文件是从git reset --soft
分支中删除的。当我们创建git reset --soft HEAD^
时,旧的分支提交会发生什么?
旧的分支提交会发生什么
首先要知道的事实:分支只是一个指向提交的名称。通过提交父链,提交是可访问的。从某个分支(或标签)可访问的所有提交的总和精确地构成了"历史"。你所说的。
通过将分支指针重置回较早的提交,可以使"旧分支提交";无法从任何分支指针访问。不可达提交不是历史记录的一部分。
然而,一个不可达的提交会在repo中保留一段时间(通常是几周),如果需要的话,它可以被检索到。在这种情况下,您可以通过reflog
.
轻松地检索它。如果它仍然不可访问,它将通过垃圾收集被自动删除。
所以,简而言之,答案是:"旧承诺";进入垃圾桶,最终垃圾桶被清空。
git reset --soft HEAD^
只将当前分支指针移动到父提交,而保持工作树和索引不变。
它对任何已经存在的提交没有任何影响,除非之前分支指针指向的提交在没有其他引用的情况下可能不再可达,并且最终可能被垃圾收集。
既然你这样做是为了纠正上述提交中的错误,似乎这就是你想要的。