概要
Gitで作業していると、コミット後に、コメントの修正や小さなリファクタをしたくなる時があります。
その修正用のコミットを新規作成しても良いですが、コミットまとめてシンプルにしたい場合もあります。
コミット修正にはresetコマンドを使った方法がありますが少しややこしいです。
修正対象が最新コミットであれば、--amend
オプションを付けることで簡単に対応できます。
最新コミット書き換え
変更前のコミット履歴
修正前に現在のコミット(直近2つ分)を確認します。
$ git log -n 2 --oneline main
4c4bdf0 (HEAD -> main, origin/main) 削除メソッド追加
a44bc99 serviceクラス追加
イメージ画像の一番右にある削除メソッド追加(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クラス追加
コミットIDが4c4bdf0
から89b0b20
に変更されていることが確認できます。
リモートリポジトリに適用する場合
ローカルの最新コミットは修正されました。
リモートリポジトリも修正する場合は、プッシュ時に--force
オプションを付けて強制プッシュを実行することで適用できます。
git push --force # リモートを書き換えたい場合
ただしこの方法はコミットID自体も変更されてしまうので、基本的には他の人も利用しているリモートリポジトリを対象には実行しないでください。
まとめ
今回は最新コミットを書き換える方法についてまとめました。
分からないことや、質問などあればコメントよろしくお願いします。