概要
git commit --amend
は、直前のコミットの内容を修正する。
- 直前のコミットが対象→2つ以上前のコミットは修正できない
- コミットメッセージの修正
- ファイルなどのコミット追加→ファイルなどの削除はできない
参考サイト:コミットの修正には git commit –amend が便利
準備
以下のローカルリポジトリーexample
を使う。
ファイル作成とファイル修正の2つのコミット。
1 2 3 4 5 6 7 8 9 10 11 12 |
[vagrant@localhost example]$ git log commit 0cf9c73b3ed2dad326f6a75dfa27542396792744 (HEAD -> master) Author: taustation <taustation@gmail.com> Date: Sat Aug 14 00:18:54 2021 +0900 modify sample.txt commit 2717c5ba08cf4fe1d562ac1bba484bb30bcf035a Author: taustation <taustation@gmail.com> Date: Sat Aug 14 00:18:02 2021 +0900 create sample.txt |
コミット後のファイルの内容。
1 2 3 |
[vagrant@localhost example]$ cat sample.txt 新規作成ファイル 1行追加 |
直前のコミットのコメントを修正する
エディターでコメント修正
以下のコマンドを実行するとエディター画面が開く。
git commit --amend
エディターに現在のコミットメッセージが表示されているので、必要な内容に変更する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
modify sample.txt # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # Date: Sat Aug 14 00:18:54 2021 +0900 # # On branch master # Changes to be committed: # modified: sample.txt # ~ ~ ~ ..... |
以下のように修正して保存・エディター終了。
1 2 3 4 5 |
MODIFY sample.txt # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. ..... |
エディターを終了すると、コマンドラインに実行結果が表示されている。
1 2 3 4 5 6 7 |
[vagrant@localhost example]$ git commit --amend [master cee8397] MODIFY sample.txt Date: Sat Aug 14 00:18:54 2021 +0900 1 file changed, 1 insertion(+) [vagrant@localhost example]$ [master cee8397] MODIFY sample.txt Date: Sat Aug 14 00:18:54 2021 +0900 1 file changed, 1 insertion(+) |
ログを確認すると、変更が反映されている。
1 2 3 4 5 6 7 8 9 10 11 12 |
[vagrant@localhost example]$ git log commit cee8397e7a77f077634b6beb26f9e95f812a839f (HEAD -> master) Author: taustation <taustation@gmail.com> Date: Sat Aug 14 00:18:54 2021 +0900 MODIFY sample.txt commit 2717c5ba08cf4fe1d562ac1bba484bb30bcf035a Author: taustation <taustation@gmail.com> Date: Sat Aug 14 00:18:02 2021 +0900 create sample.txt |
コマンドラインでコメント設定
-m
オプションでコミットメッセージを指定すると、エディターは起動せず、指定した内容でメッセージが書き換えられる。
git gommit --amend -m "メッセージ"
1 2 3 4 |
[vagrant@localhost example]$ git commit --amend -m "sample.txtを変更" [master 9d7b6af] sample.txtを変更 Date: Sat Aug 14 00:18:54 2021 +0900 1 file changed, 1 insertion(+) |
ログで確認。
1 2 3 4 5 6 7 8 9 10 11 12 |
[vagrant@localhost example]$ git log commit 9d7b6af90cdbc0b2a47620eaefd0fac92be0fa6c (HEAD -> master) Author: taustation <taustation@gmail.com> Date: Sat Aug 14 00:18:54 2021 +0900 sample.txtを変更 commit 2717c5ba08cf4fe1d562ac1bba484bb30bcf035a Author: taustation <taustation@gmail.com> Date: Sat Aug 14 00:18:02 2021 +0900 create sample.txt |
直前のコミットに追加修正する
既存ファイルを修正~メッセージ変更なし
以下のコマンドは、コミットメッセージの編集をしない。ステージングされている操作があればコミットに追加される。
git commit --amend --no-edit
たとえばsample.txt
にもう1行追加する作業を忘れていて、これを最後のコミットに加えたいとする。
1 2 3 4 5 |
[vagrant@localhost example]$ vi sample.txt [vagrant@localhost example]$ cat sample.txt 新規作成ファイル 1行追加 もう1行追加 |
git add
した後、amend
を実行。
1 2 3 4 5 |
[vagrant@localhost example]$ git add . [vagrant@localhost example]$ git commit --amend --no-edit [master f48b0d0] sample.txtを変更 Date: Sat Aug 14 00:18:54 2021 +0900 1 file changed, 2 insertions(+) |
git log -p
で確認すると、最後のコミットで2行追加されている。コミットメッセージは変わっていない。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
[vagrant@localhost example]$ git log -p commit f48b0d01a1989308cb6d9349db18a6010d6208a5 (HEAD -> master) Author: taustation <taustation@gmail.com> Date: Sat Aug 14 00:18:54 2021 +0900 sample.txtを変更 diff --git a/sample.txt b/sample.txt index 9000dab..02dbfa3 100644 --- a/sample.txt +++ b/sample.txt @@ -1 +1,3 @@ 新規作成ファイル +1行追加 +もう1行追加 commit 2717c5ba08cf4fe1d562ac1bba484bb30bcf035a Author: taustation <taustation@gmail.com> Date: Sat Aug 14 00:18:02 2021 +0900 create sample.txt diff --git a/sample.txt b/sample.txt new file mode 100644 index 0000000..9000dab --- /dev/null +++ b/sample.txt @@ -0,0 +1 @@ +新規作成ファイル |
新たなファイルを追加~追加とメッセージ変更
たとえば別のファイルsample2.txt
を作成し、これも最後のコミットに追加したいとする。
1 2 3 |
[vagrant@localhost example]$ vi sample2.txt [vagrant@localhost example]$ cat sample2.txt 別のファイル |
git add
でステージングし、amendを実行する。今度は--no-edit
ではなく、-m
オプションで新たにファイルを追加したメッセージに変更。
1 2 3 4 5 6 |
[vagrant@localhost example]$ git add . [vagrant@localhost example]$ git commit --amend -m "sample.txt変更とsample2.txt作成" [master 41ed3a9] sample.txt変更とsample2.txt作成 Date: Sat Aug 14 00:18:54 2021 +0900 2 files changed, 3 insertions(+) create mode 100644 sample2.txt |
git log -p
で確認すると、最後のコミットにsample.txt
の2つの追加とsample2.txt
の追加が全て盛り込まれている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
[vagrant@localhost example]$ git log -p commit 41ed3a926ff48f9b7bf92592d792894a551308c9 (HEAD -> master) Author: taustation <taustation@gmail.com> Date: Sat Aug 14 00:18:54 2021 +0900 sample.txt変更とsample2.txt作成 diff --git a/sample.txt b/sample.txt index 9000dab..02dbfa3 100644 --- a/sample.txt +++ b/sample.txt @@ -1 +1,3 @@ 新規作成ファイル +1行追加 +もう1行追加 diff --git a/sample2.txt b/sample2.txt new file mode 100644 index 0000000..5c0ff6a --- /dev/null +++ b/sample2.txt @@ -0,0 +1 @@ +別のファイル commit 2717c5ba08cf4fe1d562ac1bba484bb30bcf035a Author: taustation <taustation@gmail.com> Date: Sat Aug 14 00:18:02 2021 +0900 create sample.txt diff --git a/sample.txt b/sample.txt new file mode 100644 index 0000000..9000dab --- /dev/null +++ b/sample.txt @@ -0,0 +1 @@ +新規作成ファイル |