リベースのgit man ページで、ブランチのリベースの例を 1 つ見つけることができます。
H---I---J topicB
/
E---F---G topicA
/
A---B---C---D master
コマンドgit rebase --onto master topicA topicB
は...
H'--I'--J' topicB
/
| E---F---G topicA
|/
A---B---C---D master
...リベースを理解している限り、これは非常に合理的です。残念ながら、次の例は異なる出力を示しています。基本的に、リベースを使用してコミットを削除する方法について説明します。
E---F---G---H---I---J topicA
マニュアルページによると、呼び出すgit rebase --onto topicA~5 topicA~3 topicA
と...
E---H'---I'---J' topicA
...、したがって、「削除F
してG
」。
しかし、実際には、最初の例と 2 番目の例に大きな違いは見られません。
H---I topicA
/
F---G topicA~3
/
E topicA~5
したがって、結果はもっと似ているはずです
H'--I'--J' topicB
/
| F---G
|/
E
まだそこにあるのですか、それとも本当に削除されたのですかF
? G
少なくとも私をgitk
示しています これは到達不能なコミットですか? しばらくすると「ガベージコレクション」されますか? または、ディスクに永久に存在します(リモートにプッシュされた場合でも)。これは最初の例にも適用できますか? 、まだありますか?F
G
H
I
J
H
I
J