インタラクティブモードで、自動的なスカッシュを抑制して、リベースを行う
「インタラクティブモード」で、自動的なスカッシュを抑制して、リベースを行います。デフォルトでは、自動的にスカッシュは行われません。
1.ブランチの確認
現在のブランチ構成を確認すると、以下のようになっています。現在のブランチは、「fix」ブランチであることが分かります。
同様に、「HEAD」は「fix」ブランチを指していることが分かります。
ここでは例として、「fix」ブランチを「master」ブランチにリベースし、「mastsr」ブランチに「fix」ブランチの変更内容を結合します。
2.ブランチの構成
現在のブランチの構成を図にすると、以下のようになっています。「fix」ブランチを「master」ブランチにリベースするため、リベース対象の「コミットオブジェクト」は、以下のようになります。
- Commit4
- Commit5
- Commit6
3.コミットタイトルの確認
リベース対象の「コミットオブジェクト」の「コミットタイトル」を表示すると、以下のようになります。4.リベース対象のコミットオブジェクトの情報
リベース対象の「コミットオブジェクト」の情報をまとめると、以下のようになります。コミットオブジェクト | コミットオブジェクトの識別子 | コミットタイトル |
---|---|---|
Commit4 | a7e1f73ecfe9ed0b1361850826c2ea0a96d97c30 | BugFix-001 |
Commit5 | 7ad66df5e4c413f64ad53905c284d183de0829af | BugFix-002 |
Commit6 | 5c3ee7a48fcb6248a79bed1725593afc910e459f | squash! BugFix-001 |
5.コマンドの実行
コマンドのオプションは、以下のオプションを指定します。ショートオプション | ロングオプション |
---|---|
-i | --interactive |
ー | --no-autosquash |
「端末」から、以下のコマンドを実行します。
コマンドの詳細は、以下を参考にしてください。
ポイントは、赤字の箇所です。
git rebase --verbose --interactive --no-autosquash master
6.todoリストの編集
以下のようにテキストエディターが起動し、「todoリスト」が表示されます。自動的なスカッシュが行われないため、すべてのリベース対象となる「コミットオブジェクト」は、pickコマンドになっています。
「todoリスト」の編集が終わったら、ファイルを上書き保存して、テキストエディターを終了します。
7.リベースの実行
以下のように「todoリスト」の記述内容に従って、リベースが行われます。8.ブランチの確認
現在のブランチ構成を確認すると、以下のようになっています。「fix」ブランチが指す「コミットオブジェクト」の識別子が、「1.」と異なっています。
9.ブランチの構成
現在のブランチの構成を図にすると、以下のようになっています。「Commit4」の変更内容を元に、「Commit4’」が新規に生成されています。
「Commit5」の変更内容を元に、「Commit5’」が新規に生成されています。
「Commit6」の変更内容を元に、「Commit6’」が新規に生成されています。
10.コミットタイトルの確認
リベースされた「コミットオブジェクト」の「コミットタイトル」を表示すると、以下のようになります。上から以下の順番で「コミットタイトル」を表示しています。
- Commit6’
- Commit5’
- Commit4’