次のような git コミット ツリーがあるとどうなりますか。
A-B-C-D D <-- v0.9 (tag)
そして、以前にタグ付けされたコミットより前の変更を含むプル リクエストを受け入れます。タグには、マージされたプル リクエストからのコミットが含まれますか?
A-F-B-G-C-D D <-- ? v0.9 (tag)
次のような git コミット ツリーがあるとどうなりますか。
A-B-C-D D <-- v0.9 (tag)
そして、以前にタグ付けされたコミットより前の変更を含むプル リクエストを受け入れます。タグには、マージされたプル リクエストからのコミットが含まれますか?
A-F-B-G-C-D D <-- ? v0.9 (tag)
git では、タグは特定のコミット オブジェクトを指します。実際に を実行したgit pull --rebase
場合、グラフは次のようになります。
A-B-C-D
A-F-B'-G-C'-D'
実際のコミット オブジェクトはツリーの状態と親子関係に依存するため、C から D への差分が C' と D' の差分とまったく同じであっても、それらは異なるコミット オブジェクトです。
したがって、あなたの質問に対する答えはv0.9
、タグが最初に作成されたとき、タグは常に D のバージョンを指すということです。したがって、履歴を書き直した場合は、現在のブランチのツリーに存在しなくなったコミットを指すタグが作成されます。
ただし、BC と D をプッシュする前に、誰かがコミットしてブランチ FBG と C にプッシュしただけの場合は、更新に必要なプルを実行するときに、マージまたはリベースのどちらを実行するかによって、何が起こるかが異なります。既存の歴史を持つ地元の支店。
デフォルトはマージです。これにより、グラフは次のようになります。
A-F-B-G-C
\ \
B-C-D---M
ブランチ ヘッドが M を指す場所と、ツリーの各ブランチの B と C は異なります (両方とも別の場所から同じコミットを選択したとしても)。
アップデート
tl;dr: