HOWTO · Git

Git で特定のコミットを変更する

Git のローカル リポジトリ内の任意のコミットを変更できます。

この記事では、Git で特定のコミットを変更する方法について説明します。 ファイルの名前変更、スカッシュ、編集、またはコミットへの追加が必要になる場合があります。

これを行う最善の方法は、対話モードで git rebase コマンドを使用することです。 これについてどう思いますか?

Git で特定のコミットを変更する

コミットを変更するには、対話モードで git rebase を実行する必要があります。 例を使って説明しましょう。

git log –oneline

以下のコマンドを実行して、対話モードで git rebase を実行します。

$ git rebase -i HEAD~10

git rebase

ご覧のとおり、コミットを変更するために使用できるコマンドがいくつかあります。

オプションについて簡単に見ていきましょう。

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

コミットを変更するには、pick を上記のオプションのいずれかに置き換えます。 コミットの 1つの名前を変更してみましょう。

8c1cefc My Commit Message commit を reword し、3つのコード修正を押しつぶします。

コミットを変更

編集後、テキスト エディターを終了してリベースを完了できます。 Git が再びテキスト エディターを開き、コミットに新しいメッセージを送信できるようにします。

また、Git はもう一度エディターを開き、押しつぶされたコミットにコミット メッセージを与えることができるようにします。

この時点で、マージの競合が発生する可能性があります。 競合を手動で解決し、変更をコミットする必要があります。

変更をコミットするには、以下に示すように、--amend フラグを指定して git commit を実行します。

$ git commit --amend --all --no-edit

最後のステップは、以下のコマンドでリベースを終了することです。

$ git rebase --continue

これでリベースが終了し、選択したコミットが変更されます。

簡単に言うと、対話モードでリベースを実行することで、Git のコミットを変更できます。 対話モードでコミットを変更するために使用できるコマンドがいくつかあります。

変更をコミットするときは、--amend フラグを使用します。