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

マスターをスカッシュした後、ブランチ 1 または 2 をチェックアウトすると、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' は、B が履歴から削除されていることを除いて、C と D に似ています。ブランチ 1 と 2 はマスター リベースの影響を受けません。結果の別のビューは次のようになります。

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

ここで、C ではなく A が、すべてのブランチの最も近い共通の祖先になります。

于 2012-10-19T19:24:14.497 に答える