リベースを中断しているコミットオブジェクトのリベースをスキップし、次のコミットオブジェクトからリベースを続行する
リベースでは、リベースを中断しているリベース元の「コミットオブジェクト」のリベースをスキップし、次のリベース対象の「コミットオブジェクト」からリベースを続行することができます。スキップされたリベース元の「コミットオブジェクト」の変更内容は、リベース先に反映されません。
1.ブランチの確認
現在のブランチ構成を確認すると、以下のようになっています。現在のブランチは、「fix」ブランチであることが分かります。
同様に、「HEAD」は「fix」ブランチを指していることが分かります。
ここでは例として、「fix」ブランチを「master」ブランチにリベースし、「mastsr」ブランチに「fix」ブランチの変更内容を結合します。
2.ブランチの構成
現在のブランチの構成を図にすると、以下のようになっています。「fix」ブランチを「master」ブランチにリベースするため、リベース対象の「コミットオブジェクト」は、以下のようになります。
- Commit4
- Commit5
- Commit6
3.リベースの実行
「端末」から、以下のコマンドを実行します。コマンドの詳細は、「ファイルの変更内容を異なるブランチに結合するコマンドの説明」を参考にしてください。
git rebase --verbose master
4.コマンドの実行
以下のように、リベース結果が表示されます。「master.txt」ファイルで「マージコンフリクト」が発生したと出力されています。
このリベースの中断は、「Commit5」のリベース時に発生しています。
5.ワーキングディレクトリーの状態
「ワーキングディレクトリー」の状態を見てみます。以下のように、リベースが中断されていることや、「master.txt」ファイルで「マージコンフリクト」が発生していることが分かります。
6.リベースのスキップ
リベースを中断しているリベース元の「コミットオブジェクト」のリベースをスキップし、次のリベース対象の「コミットオブジェクト」からリベースを続行します。コマンドのオプションは、以下のオプションを指定します。
オプション |
---|
--skip |
「端末」から、以下のコマンドを実行します。
コマンドの詳細は、「ファイルの変更内容を異なるブランチに結合するコマンドの説明」を参考にしてください。
ポイントは赤字の箇所です。
git rebase --skip
7.リベースの実行
次のリベース対象の「コミットオブジェクト」からリベースを続行します。リベースが完了しました。
8.ブランチの確認
現在のブランチ構成を確認すると、以下のようになっています。「fix」ブランチが指す「コミットオブジェクト」の識別子が、「1.」と異なっています。
9.ブランチの構成
現在のブランチの構成を図にすると、以下のようになっています。「Commit4」の変更内容を元に、「Commit4’」が新規に生成されています。
「Commit6」の変更内容を元に、「Commit6’」が新規に生成されています。