kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu Git その380 - インタラクティブモードで、リベース先でコミットが行われる度にシェルコマンドを実行し、リベースを行う(git rebase)

インタラクティブモードで、リベース先でコミットが行われる度にシェルコマンドを実行し、リベースを行う

  「インタラクティブモード」では、リベース先でコミットが行われる度に、ユーザーが指定したシェルコマンドを実行しながらリベースを行うことができます。

オプションの値について

  コミットごとに実行するシェルコマンドは、コマンドのオプションの値で指定します。

ショートオプション ロングオプション オプションの値
-x --exec 実行するシェルコマンド

  実行するシェルコマンド

    実行するシェルコマンドは、「"」か「'」で括って記述します。
    例えば、以下のように記述します。

git rebase --verbose --interactive --exec "実行するシェルコマンド" master

  複数のシェルコマンドを指定可能

    複数のシェルコマンドを指定することもできます。
    複数のシェルコマンドを指定する場合、複数のオプションを指定します。

    例えば、以下のように記述します。

git rebase --verbose --interactive --exec "実行するシェルコマンド" --exec "実行するシェルコマンド" master

    この場合、オプションで指定した順番でシェルコマンドが実行されます。

コマンドの実行例

  コマンドの実行例です。

  1.ブランチの確認

    現在のブランチ構成を確認すると、以下のようになっています。
    現在のブランチは、「fix」ブランチであることが分かります。
    同様に、「HEAD」は「fix」ブランチを指していることが分かります。


    ここでは例として、「fix」ブランチを「master」ブランチにリベースし、「mastsr」ブランチに「fix」ブランチの変更内容を結合します。

  2.ブランチの構成

    現在のブランチの構成を図にすると、以下のようになっています。


    「fix」ブランチを「master」ブランチにリベースするため、リベース対象の「コミットオブジェクト」は、以下のようになります。

  • Commit4
  • Commit5
  • Commit6

  3.コマンドの実行

    コマンドのオプションは、以下のオプションを指定します。

ショートオプション ロングオプション オプションの値
-i --interactive ー
-x --exec 実行するシェルコマンド

    「端末」から、以下のコマンドを実行します。
    コマンドの詳細は、以下を参考にしてください。

  • ファイルの変更内容を異なるブランチに結合するコマンドの説明
  • 対話的にリベースを行うインタラクティブモードとは

    ここでは例として、コミットごとに「HEAD」のコミットログを出力します。
    ポイントは、赤字の箇所です。

git rebase --verbose --interactive --exec "git log HEAD^..HEAD" master


  4.todoリストの編集

    以下のようにテキストエディターが起動し、「todoリスト」が表示されます。
    オプションで指定したシェルコマンドが、「exec」コマンドに展開されています。


    「todoリスト」の編集が終わったら、ファイルを上書き保存して、テキストエディターを終了します。

  5.リベースの実行

     以下のように「todoリスト」の記述内容に従って、リベースが行われます。
    赤字の箇所が、シェルコマンドの実行結果です。

ubuntu@ubuntu-vb-1504:~/git/myCloneProject$ git rebase --verbose --interactive --exec "git log HEAD^..HEAD"  master
Changes from 2537d065f4f34d5c75093e1091a0ddcd4681c5fe to acb648c5ac895850a1b0c7735f6f7c66eb8d199f:
 master.txt | 2 ++
 1 file changed, 2 insertions(+)
Note: checking out 'acb648c5ac895850a1b0c7735f6f7c66eb8d199f'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at acb648c... master
Rebasing (1/6)
a7e1f73ecfe9ed0b1361850826c2ea0a96d97c30
[detached HEAD ba6f271] BugFix-001
 Date: Fri Sep 25 18:12:14 2015 +0900
 1 file changed, 1 insertion(+)
 create mode 100644 fix.txt
Rebasing (2/6)
Executing: git log HEAD^..HEAD
commit ba6f271a604ed38865b0f1f9ed57f7077819167e
Author: kledgeb <kledgeb@kledgeb.com>
Date:   Fri Sep 25 18:12:14 2015 +0900


    BugFix-001
Rebasing (3/6)
7ad66df5e4c413f64ad53905c284d183de0829af
[detached HEAD e848d30] BugFix-002
 Date: Fri Sep 25 18:12:27 2015 +0900
 1 file changed, 1 insertion(+)
Rebasing (4/6)
Executing: git log HEAD^..HEAD
commit e848d30e60878de785d533f50ee104b5fa5c069a
Author: kledgeb <kledgeb@kledgeb.com>
Date:   Fri Sep 25 18:12:27 2015 +0900

    BugFix-002

Rebasing (5/6)
455b9273894e8f4f2fee4fd1f951c8c37b1d79a0
[detached HEAD be2320c] BugFix-003
 Date: Sun Sep 27 22:13:14 2015 +0900
 1 file changed, 1 insertion(+)
Rebasing (6/6)
Executing: git log HEAD^..HEAD
commit be2320c6f348623684c92df644525b1f9be3419e
Author: kledgeb <kledgeb@kledgeb.com>
Date:   Sun Sep 27 22:13:14 2015 +0900


    BugFix-003
 master.txt | 2 ++
 1 file changed, 2 insertions(+)
Successfully rebased and updated refs/heads/fix.

  6.ブランチの確認

    現在のブランチ構成を確認すると、以下のようになっています。
    「fix」ブランチが指す「コミットオブジェクト」の識別子が、「1.」と異なっています。


  7.ブランチの構成

    現在のブランチの構成を図にすると、以下のようになっています。


    「Commit4」の変更内容を元に、「Commit4’」が新規に生成されています。
    「Commit5」の変更内容を元に、「Commit5’」が新規に生成されています。
    「Commit6」の変更内容を元に、「Commit6’」が新規に生成されています。


Git
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 22.04 その120 - UbuntuのブートローダーをBoot Repairで修復するには・Ubuntuが起動しないトラブルを解決
    UbuntuのブートローダーをBoot Repairで修復するには 「Boot Repair」はOSのブートローダーに起因するOSが起動しない問題を簡単に解決してくれるアプリです。
  • Ubuntu 22.04 その95 - ディスプレイサーバーを切り替えるには・XorgとWayland
    ディスプレイサーバーを切り替えるには 「Ubuntu」はデフォルトで2種類のディスプレイサーバーを提供しています。
  • Ubuntu 24.04 その70 - Ubuntu 24.04.4 LTS のリリーススケジュール
    Ubuntu 24.04.4 LTS のリリーススケジュール Ubuntu 24.04.4 LTS のリリーススケジュールを紹介します。
  • Ubuntu 22.04 その79 - 画面ロックの有効・無効を設定するには・画面ロック時の設定をカスタマイズするには
    画面ロックの有効・無効を設定するには 一定時間ユーザーによる操作がない時に、自動的に画面をロックしパスワードで保護したり、画面をブランク状態にできます。
  • Ubuntu 26.04 その9 - Ubuntu Desktop 26.04 LTS の開発方針・プリインストールアプリの変更やソフトウェア管理の一元化など
    Ubuntu Desktop 26.04 LTS の開発方針 2025年11月26日、Ubuntu Desktop 26.04 LTS の開発方針がアナウンスされました。
  • Ubuntu 22.04 その98 - 入力ソースとキーボートレイアウトと日本語入力のカスタマイズ
    入力ソースとキーボートレイアウトと日本語入力 「Ubuntu」ではユーザーが利用しているキーボードレイアウトや日本語入力のカスタマイズが可能です。
  • Ubuntu nano その5 - 文字列を検索する
    文字列を検索する(Where Is)   文字列の検索は、部分一致と正規表現による検索が可能です。 検索の開始始点   現在カーソルのある位置から検索を行います。   もし、テキストの最後まで検索して文字が見つからない場合、   nanoはテキストの先頭から検索...
  • VirtualBox その125 - ゲストOSのUbuntuにLinux Guest Additionsをインストールするには
    ゲストOSのUbuntuにLinux Guest Additionsをインストールするには 仮想マシンにインストールしたゲストOSの「Ubuntu」に、「Linux Guest Additions」をインストールする方法です。
  • Ubuntu 22.04 LTSのインストール その5 - UEFI環境でパーティションの作成と構成 〜 ブートローダーのインストール先の選択
    UEFI環境でパーティションの作成と構成を行う UEFI環境でパーティションの作成と構成を行います。
  • Ubuntu 22.04 その99 - 日本語入力(Mozc)の設定をカスタマイズして作業効率を上げよう
    日本語入力(Mozc)の設定をカスタマイズするには 「Ubuntu」では日本語入力に「Mozc」を採用しています。
記事のピックアップ
オプション