1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gitで最新コミットを書き換える方法

Posted at

概要

Gitで作業していると、コミット後に、コメントの修正や小さなリファクタをしたくなる時があります。
その修正用のコミットを新規作成しても良いですが、コミットまとめてシンプルにしたい場合もあります。
コミット修正にはresetコマンドを使った方法がありますが少しややこしいです。
修正対象が最新コミットであれば、--amendオプションを付けることで簡単に対応できます。

最新コミット書き換え

変更前のコミット履歴

修正前に現在のコミット(直近2つ分)を確認します。

$ git log -n 2 --oneline main
4c4bdf0 (HEAD -> main, origin/main) 削除メソッド追加
a44bc99 serviceクラス追加

イメージ画像
image.png

イメージ画像の一番右にある削除メソッド追加(4c4bdf0)のコミットに追加の変更を加えていきます。

修正を追加する

$ git diff
diff --git a/src/main/java/com/example/git/GitSample/SampleRepository.java b/src/main/java/com/example/git/GitSample/SampleRepository.java
index 997aad4..87972b3 100644
--- a/src/main/java/com/example/git/GitSample/SampleRepository.java
+++ b/src/main/java/com/example/git/GitSample/SampleRepository.java
@@ -5,6 +5,7 @@ import org.springframework.stereotype.Repository;
 @Repository
 public class SampleRepository {

+    // ユーザー削除
     public String deleteUser(String userId) {
         return "田中";
     }

削除メソッドにコメントを追加しました。

追加した修正を最新のコミットに含める

ステージングに修正内容を追加します。

$ git add .

--amendオプションを付けてコミットします。
--no-editを付けることで最新のコミットのコメントをそのまま適用されます。

$ git commit --amend --no-edit
[main 89b0b20] 削除メソッド追加
 Date: Mon Aug 4 12:47:29 2025 +0900
 2 files changed, 19 insertions(+), 12 deletions(-)

これで先ほど追加したコメントが最新のコミットに含まれました。
正確には最新のコミットを修正したのではなく、最新コミットの修正内容に追加の修正内容を含めた新規のコミットを作成して上書きがされました。
その証拠にコミットのIDが変わっています。

$ git log -n 2 --oneline main
89b0b20 (HEAD -> main) 削除メソッド追加
a44bc99 serviceクラス追加

image.png

コミットIDが4c4bdf0から89b0b20に変更されていることが確認できます。

リモートリポジトリに適用する場合

ローカルの最新コミットは修正されました。
リモートリポジトリも修正する場合は、プッシュ時に--forceオプションを付けて強制プッシュを実行することで適用できます。

git push --force # リモートを書き換えたい場合

ただしこの方法はコミットID自体も変更されてしまうので、基本的には他の人も利用しているリモートリポジトリを対象には実行しないでください。

まとめ

今回は最新コミットを書き換える方法についてまとめました。
分からないことや、質問などあればコメントよろしくお願いします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?