修正をやりなおす
Gitで修正をやりなおす
ここまでで、Gitでブランチを作成して、ローカルでコミットして、リモートにプッシュしてマージする一連の流れを学びました。
しかし、実際の開発では、今まで進めてきた作業のように順調に進むことばかりではありません。
時には間違ってコミットしてしまったり、やり直したくなることもあります。
ここでは、Gitで修正をやりなおす方法について学びましょう。
作業ブランチを作成する
まずは今回のGitで修正をやりなおす方法を学ぶための作業ブランチをmainブランチから作成します。
実際の開発現場では基本的にmainブランチに直接コミットをすることはありません。
作業ブランチを作成して、そこで作業を進めていく癖をつけておきましょう。
git switch -c git-amend-practice
ブランチを作成して、作業ブランチをgit-amend-practice
に切り替えました。
次のようなブランチの状態になります。
gitGraph commit branch git-amend-practice checkout git-amend-practice
直前のコミットをやりなおすための準備
次に、直前のコミットをやりなおす方法を学びます。
例えば、コミットメッセージを間違えてしまって修正したい場合や、直前のコミットの内容を変更したい場合、別なファイルを追加したい場合などに使用します。
では、直前のコミットを修正を練習するためのコミットを行います。
echo "吾輩は犬である、名前はまだない。" > natsume.txt
正しいのは吾輩は猫である、名前はまだない。
ですが、あとで修正するので、あえて間違った内容でコミットします。
次に、natsume.txt
ファイルをステージングエリアに追加します。
git add natsume.txt
次に、コミットを行います。
git commit -m "なつめそうせきの小説"
ここまでで作業ブランチgit-amend-practice
にコミットが1つ追加されました。
次のようなブランチの状態になります。
gitGraph commit branch git-amend-practice checkout git-amend-practice commit id: "なつめそうせきの小説"
ここまでで、直前のコミットをやりなおすための準備ができました。
git log
コマンドを実行して、コミット履歴を確認してみましょう。
git log67eaba8 (HEAD -> git-amend-practice) なつめそうせきの小説c734a1d (origin/main, main) Merge pull request #1 from ihatov08/mod_readme9db43ce (origin/mod_readme) Fix pull request text1532278 プルリクエストのテストfb9e6df Add README.md
このときに「なつめそうせきの小説」というコミットメッセージのコミットハッシュ(上記の例の場合は67eaba8)を覚えておくか、どこかにメモしておきましょう。
直前のコミットをやりなおす
この時点で「吾輩は犬である、名前はまだない。」という内容のコミットをしてしまいました。
しかし、正しくは「吾輩は猫である、名前はまだない。」です。
このコミットをやりなおして、正しい内容に修正しましょう。
テキストエディタでnatsume.txt
ファイルを開いて、内容を修正します。
吾輩は猫である、名前はまだない。
git diff
コマンドを実行して、変更内容を確認します。
git diff
次のように表示されれば、変更内容が確認できます。
diff --git a/natsume.txt b/natsume.txtindex 9e341ee..dea78d6 100644--- a/natsume.txt+++ b/natsume.txt@@ -1 +1 @@-吾輩は犬である、名前はまだない。+吾輩は猫である、名前はまだない。
git status
コマンドを実行して、変更があることを確認します。
git statusOn branch git-amend-practiceChanges not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: natsume.txt
natsume.txt
ファイルが変更されていることがわかります。
変更内容はワーキングツリーにあるので、ステージングエリアに追加しましょう。
git add natsume.txt
直前のコミットをやりなおすには、git commit --amend
コマンドを使用します。
このコマンドを使用すると、ステージングエリアにある変更を直前のコミットに追加して、コミットを修正することができます。
git commit --amend -m "夏目漱石の小説"
これで、直前のコミットが修正されました。
コミットメッセージも「夏目漱石の小説」に変更されました。
git log
コマンドを実行して、コミット履歴を確認してみましょう。
git logcommit 21d4280b3f8fe635f9839cba11f82a2b362eea9e (HEAD -> git-amend-practice)Author: tomoya yoshida <ihatov08@gmail.com>Date: Mon Jul 14 08:58:06 2025 +0900
夏目漱石の小説
直前のコミットが修正されていることがわかります。
またコミットハッシュも変更されていることに注意してください。
コミットハッシュが変更されるのは、コミットの内容が変更されたためです。
これにより、Gitは新しいコミットとして扱います。
原則としてリモートリポジトリにpushしているコミットをgit commit --amend
で修正することは避けるべきです。
なぜなら、リモートリポジトリにpushしたコミットを修正すると、他の開発者がそのコミットを参照している場合、他の開発者のリポジトリとの整合性が取れなくなってしまうからです。
つまり、git commit --amend
はローカルでの修正に限定して使用することをおすすめします。
コミットメッセージの修正
ちなみにgit commit --amend
で-m
オプションを指定しなかった場合、デフォルトのテキストエディタが開いて、コミットメッセージを編集することができます。
デフォルトのエディタは次のコマンドで確認できます。
git config --global core.editor
私はvim
を使用しているので、以下のように表示されます。
$ git config --global core.editorvim
vim
に設定するには以下のコマンドを実行します。
git config --global core.editor vim