コマンド ラインで Git Rebase を使用する

John Wachira 2024年2月15日
コマンド ラインで Git Rebase を使用する

この記事では、git rebase コマンドを効果的に使用する方法について説明します。 git rebase コマンドを使用すると、一連のコミットを変更し、リポジトリ内のコミット履歴を変更できます。

git rebase コマンドを使用して、コミットを編集、並べ替え、またはスカッシュできます。

コマンドラインで git rebase を使用

一般的な使用方法のオプションを次に示します。

  1. 以前のコミット メッセージを編集できます。
  2. 2つ以上のコミットを 1つに結合できます。
  3. リポジトリ内の不要なコミットを元に戻すか削除できます。

リベースするときは、ブランチまたはリポジトリ内の特定の時点に対してリベースできます。

ブランチに対してリベースするには、次を実行します。

$ git rebase --interactive <branch_name>

特定の時点に対してリベースするには、次を実行します。

$ git rebase --interacive HEAD~

HEAD~7 を追加して、7つ目のコミットまでリベースできます。

リベース中に使用可能なコマンドを見てみましょう。

  1. pick - コミット履歴を並べ替えるために使用します。
  2. reword - コミットメッセージを変更したいときに使用します。 コミットによって導入された変更には影響しません。
  3. edit - コミットを編集または修正するときに使用します。 コミットを小さなコミットに分割したり、コミットによって発生したエラーを削除したりできます。
  4. squash - これを使用して 2つのコミットを 1つに結合し、新しいコミットに新しいメッセージを与える機会を与えます。
  5. fixup - マージされたコミットのメッセージを破棄し、その上のメッセージを使用することを除いて、squash と同じです。

上記のオプションを例で使用してみます。 この例では、Delftscopetech リポジトリの特定の時点に対してリベースします。

HEAD~7 をリベースします。 私たちは走る:

$ git rebase --interactive HEAD~7

テキスト エディターに次の出力が表示されます。

7回目のコミットまでのgit rebase

私たちのコミットは、古いものから新しいものへと並べられています。

テキスト エディターでは、次のことを行います。

  1. squash を使用して、コミット (fa39187) をコミット (1fc6c95) に押しつぶします。
  2. 最後のコミット (7b36971) をコミット (6b2481b) の前に移動し、pick のままにします。
  3. コミット (c619268) をコミット (6b2481b) にマージし、fixup を使用してコミット メッセージを破棄します。
  4. edit を使用して (dd1475d) を分割します。
  5. reword を使用してコミット メッセージ (4ca2acc) を修正します。

以下のように、テキスト エディターでコマンドを変更します。

テキスト エディタを変更する

テキスト エディターを保存して閉じると、Git がリベースを開始します。

squash には入力が必要なため、Git は pick 1fc6c95 をスキップしてエディターを開きます。 このように見えるはずです。

Git オープン エディター - スカッシュ

変更に問題がなければ、エディターを閉じてリベースを続行できます。 次の 3つのコマンドは入力を必要としませんが、edit は入力を必要とし、以下のメッセージを端末に出力します。

Git オープン エディター - 編集

この時点で、git commit --amend コマンドを使用して変更を加え、新しいコミットを作成できます。 完了したら、git rebase --continue コマンドを実行して続行できます。

変更を行った後は、常に git rebase --continue を実行してください。 コマンドの実行を忘れてコーディングを続行すると、後でリベースできなくなります。

ただし、次の方法でこれを修正できます。

  1. 親への HEAD ref に対して git reset --soft HEAD^ コマンドを実行します。
  2. git rebase --continue を実行して、リベースを終了します。

git rebase --abort コマンドを実行してリベースを中止し、プロセスをやり直すこともできます。 これにより、マージの競合を再度解決する必要があります。

reword の部分には入力が必要です。Git は、以下の情報を含むテキスト エディターを開きます。

Git オープン エディター - reword

テキストを変更し、ファイルを保存して、リベースを終了できます。

簡単に言えば、git rebase コマンドを使用すると、コミットに関してリポジトリの状態を変更できます。 コミットをスカッシュ、名前変更、または並べ替えることができます。

リベース中にコンフリクトをマージするときは注意してください。

著者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

関連記事 - Git Rebase