3

假设我有以下树结构:

A-B-C-D
    |\E-F (branch one)
     \G-H (branch two)

Master history: A-B-C-D
Branch one history: A-B-C-E-F
Branch two history: A-B-C-G-H

我想压缩提交 B,所以各自的历史应该如下所示:

A-C-D
A-C-E-F
A-C-G-H

我发现,在我 squash master 之后,当我结帐分支一或两个时,当我运行 git log 时,它们仍然显示旧的历史记录。分支时git会复制树吗?我是否需要单独重新设置每个分支?

谢谢

4

1 回答 1

3

是的,您需要单独重新设置每个分支。删除提交 B 后,您得到

Master history: A-C'-D'
Branch one history: A-B-C-E-F
Branch two history: A-B-C-G-H

其中 C' 和 D' 与 C 和 D 类似,除了 B 从历史记录中删除。分支一和二不受主变基的影响。结果的另一种观点是:

A-C'-D'
|\B-C-E-F (branch one)
 \B-C-G-H (branch two)

现在,A,而不是 C,是所有分支中最近的共同祖先。

于 2012-10-19T19:24:14.497 回答