2

リベースの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示しています これは到達不能なコミットですか? しばらくすると「ガベージコレクション」されますか? または、ディスクに永久に存在します(リモートにプッシュされた場合でも)。これは最初の例にも適用できますか? 、まだありますか?FGHIJHIJ

4

2 に答える 2

2

それらは削除されず、コミットはまだそこにあり、コミットがわかっている場合は、それらをチェックアウトし、タグを付け、ブランチを作成することができます.git reflogコマンドはそれらを見つけるのに役立ちます.

それらを参照するものがない場合、それらは最終的にガベージコレクションされます。このページでは、それについて詳しく説明します。デフォルトでは 90 日後です。

于 2013-04-24T13:52:31.247 に答える