我知道
git rebase
将更新受影响提交的 SHA。但是,如果我错了,请纠正我,父提交也会更新,然后他们的父提交也会更新,依此类推。那么,整个存储库的提交历史记录是否会因运行单个 rebase 命令而更新?或者它只影响到被重新定位的分支的基础?
假设这是您的存储库
... -- * -- X -- A -- B -- C (master)
\
-- D -- E -- F (foo)
如果将
foo
变基为 master
,则会创建 三个 新提交:来自 D'
的 D
、来自 E'
的 E
以及来自 F'
的 F
。 D
、E
或F
均未更新;它们保持“原样”。主要区别是引用foo
不再指向F
;它指向F'
:... -- * -- X -- A -- B -- C (mastre) -- D' -- E' -- F' (foo)
\
-- D -- E -- F
没有对
F
的引用,因此在某些时候它将有资格进行垃圾收集。 当这种情况发生时,将不再有对
E
的引用,并且 it将符合资格。当 that 发生时,
D
就没有剩余的引用了,它也将被垃圾收集。然而,*
有两个参考文献,D
和X
,所以它仍然存在。